Threaded > Bubble

This commit is contained in:
lumaa-dev 2024-09-15 15:15:46 +02:00
parent 49c409ce89
commit aa65d7d4b0
202 changed files with 417 additions and 750 deletions

2
.gitignore vendored
View File

@ -94,4 +94,4 @@ iOSInjectionProject/
Store/
# Secret
Threaded/Secret.plist
Bubble/Secret.plist

View File

@ -165,11 +165,11 @@
B9BF54072B6B6823004B24E7 /* KeychainSwift in Frameworks */ = {isa = PBXBuildFile; productRef = B9BF54062B6B6823004B24E7 /* KeychainSwift */; };
B9C20D0B2B921C78004DC9B3 /* WidgetKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B9C20D0A2B921C78004DC9B3 /* WidgetKit.framework */; };
B9C20D0D2B921C78004DC9B3 /* SwiftUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B9C20D0C2B921C78004DC9B3 /* SwiftUI.framework */; };
B9C20D102B921C78004DC9B3 /* ThreadedWidgetsBundle.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C20D0F2B921C78004DC9B3 /* ThreadedWidgetsBundle.swift */; };
B9C20D102B921C78004DC9B3 /* BubbleWidgetsBundle.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C20D0F2B921C78004DC9B3 /* BubbleWidgetsBundle.swift */; };
B9C20D122B921C78004DC9B3 /* FollowCountWidget.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C20D112B921C78004DC9B3 /* FollowCountWidget.swift */; };
B9C20D142B921C78004DC9B3 /* AppIntent.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C20D132B921C78004DC9B3 /* AppIntent.swift */; };
B9C20D162B921C7B004DC9B3 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = B9C20D152B921C7B004DC9B3 /* Assets.xcassets */; };
B9C20D1A2B921C7B004DC9B3 /* ThreadedWidgetsExtension.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = B9C20D092B921C78004DC9B3 /* ThreadedWidgetsExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
B9C20D1A2B921C7B004DC9B3 /* BubbleWidgetsExtension.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = B9C20D092B921C78004DC9B3 /* BubbleWidgetsExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
B9C20D342B9229EC004DC9B3 /* Client.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9FB949A2B2EF09A00D81C07 /* Client.swift */; };
B9C20D372B9229EC004DC9B3 /* AppInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9FB94A12B2EF24A00D81C07 /* AppInfo.swift */; };
B9C20D3D2B9229EC004DC9B3 /* Emoji.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9FB94872B2E223E00D81C07 /* Emoji.swift */; };
@ -183,13 +183,13 @@
B9D9C6C72B6A590F00C26A41 /* ProfilePicture.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9D9C6C62B6A590F00C26A41 /* ProfilePicture.swift */; };
B9DC69292B78D9A500E625B9 /* SearchResultView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9DC69282B78D9A500E625B9 /* SearchResultView.swift */; };
B9DC692D2B79362700E625B9 /* StoreKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B9DC692C2B79362700E625B9 /* StoreKit.framework */; };
B9DC69302B79378400E625B9 /* ThreadedPlus.storekit in Resources */ = {isa = PBXBuildFile; fileRef = B9DC692F2B79378400E625B9 /* ThreadedPlus.storekit */; };
B9DC69302B79378400E625B9 /* BubblePlus.storekit in Resources */ = {isa = PBXBuildFile; fileRef = B9DC692F2B79378400E625B9 /* BubblePlus.storekit */; };
B9EBE8562B47256900FB594D /* PostAttachment.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9EBE8552B47256900FB594D /* PostAttachment.swift */; };
B9EBE8582B474FD600FB594D /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9EBE8572B474FD600FB594D /* AppDelegate.swift */; };
B9F8FA162B5D3AC30044DAB4 /* SafariView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9F8FA152B5D3AC30044DAB4 /* SafariView.swift */; };
B9FA6E752B82367B00D63E30 /* AttachmentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9FA6E742B82367B00D63E30 /* AttachmentView.swift */; };
B9FA6E772B82788A00D63E30 /* AccountRow.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9FA6E762B82788A00D63E30 /* AccountRow.swift */; };
B9FB945B2B2DEECE00D81C07 /* ThreadedApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9FB945A2B2DEECE00D81C07 /* ThreadedApp.swift */; };
B9FB945B2B2DEECE00D81C07 /* BubbleApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9FB945A2B2DEECE00D81C07 /* BubbleApp.swift */; };
B9FB945D2B2DEECE00D81C07 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9FB945C2B2DEECE00D81C07 /* ContentView.swift */; };
B9FB94612B2DEECF00D81C07 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = B9FB94602B2DEECF00D81C07 /* Assets.xcassets */; };
B9FB94642B2DEECF00D81C07 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = B9FB94632B2DEECF00D81C07 /* Preview Assets.xcassets */; };
@ -216,7 +216,7 @@
B9FB94AA2B2F009F00D81C07 /* AuthenticationServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B9FB94A92B2F009F00D81C07 /* AuthenticationServices.framework */; };
B9FB94AD2B2F009F00D81C07 /* AuthenticationViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9FB94AC2B2F009F00D81C07 /* AuthenticationViewController.swift */; };
B9FB94B02B2F009F00D81C07 /* AuthenticationViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = B9FB94AE2B2F009F00D81C07 /* AuthenticationViewController.xib */; };
B9FB94B42B2F009F00D81C07 /* ThreadedAuthService.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = B9FB94A72B2F009F00D81C07 /* ThreadedAuthService.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
B9FB94B42B2F009F00D81C07 /* BubbleAuthService.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = B9FB94A72B2F009F00D81C07 /* BubbleAuthService.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
B9FB94BC2B2F035500D81C07 /* Tag.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9FB94BB2B2F035500D81C07 /* Tag.swift */; };
B9FD18982C55108F00A74A71 /* EditProfileView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9FD18972C55108F00A74A71 /* EditProfileView.swift */; };
B9FD189A2C57DE9200A74A71 /* IconView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9FD18992C57DE9200A74A71 /* IconView.swift */; };
@ -256,8 +256,8 @@
dstPath = "";
dstSubfolderSpec = 13;
files = (
B9FB94B42B2F009F00D81C07 /* ThreadedAuthService.appex in Embed Foundation Extensions */,
B9C20D1A2B921C7B004DC9B3 /* ThreadedWidgetsExtension.appex in Embed Foundation Extensions */,
B9FB94B42B2F009F00D81C07 /* BubbleAuthService.appex in Embed Foundation Extensions */,
B9C20D1A2B921C7B004DC9B3 /* BubbleWidgetsExtension.appex in Embed Foundation Extensions */,
);
name = "Embed Foundation Extensions";
runOnlyForDeploymentPostprocessing = 0;
@ -319,16 +319,16 @@
B9BED5152B5D5E6500C9B715 /* PostInteractor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PostInteractor.swift; sourceTree = "<group>"; };
B9BED5172B5D649C00C9B715 /* PostMenu.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PostMenu.swift; sourceTree = "<group>"; };
B9BED5192B5D662D00C9B715 /* ShareSheetController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShareSheetController.swift; sourceTree = "<group>"; };
B9C20D092B921C78004DC9B3 /* ThreadedWidgetsExtension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = ThreadedWidgetsExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; };
B9C20D092B921C78004DC9B3 /* BubbleWidgetsExtension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = BubbleWidgetsExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; };
B9C20D0A2B921C78004DC9B3 /* WidgetKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WidgetKit.framework; path = System/Library/Frameworks/WidgetKit.framework; sourceTree = SDKROOT; };
B9C20D0C2B921C78004DC9B3 /* SwiftUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SwiftUI.framework; path = System/Library/Frameworks/SwiftUI.framework; sourceTree = SDKROOT; };
B9C20D0F2B921C78004DC9B3 /* ThreadedWidgetsBundle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThreadedWidgetsBundle.swift; sourceTree = "<group>"; };
B9C20D0F2B921C78004DC9B3 /* BubbleWidgetsBundle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BubbleWidgetsBundle.swift; sourceTree = "<group>"; };
B9C20D112B921C78004DC9B3 /* FollowCountWidget.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FollowCountWidget.swift; sourceTree = "<group>"; };
B9C20D132B921C78004DC9B3 /* AppIntent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppIntent.swift; sourceTree = "<group>"; };
B9C20D152B921C7B004DC9B3 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
B9C20D172B921C7B004DC9B3 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
B9C20D582B923CDD004DC9B3 /* ThreadedWidgetsExtension.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = ThreadedWidgetsExtension.entitlements; sourceTree = "<group>"; };
B9C20D592B923D53004DC9B3 /* Threaded.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Threaded.entitlements; sourceTree = "<group>"; };
B9C20D582B923CDD004DC9B3 /* BubbleWidgetsExtension.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = BubbleWidgetsExtension.entitlements; sourceTree = "<group>"; };
B9C20D592B923D53004DC9B3 /* Bubble.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Bubble.entitlements; sourceTree = "<group>"; };
B9C7F46B2C387D3B009C36DC /* WarningView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WarningView.swift; sourceTree = "<group>"; };
B9CC45B72B40A2D6001E4FA5 /* AboutView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AboutView.swift; sourceTree = "<group>"; };
B9CC45B92B40AA1E001E4FA5 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = "<group>"; };
@ -340,14 +340,14 @@
B9D9C6C62B6A590F00C26A41 /* ProfilePicture.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfilePicture.swift; sourceTree = "<group>"; };
B9DC69282B78D9A500E625B9 /* SearchResultView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchResultView.swift; sourceTree = "<group>"; };
B9DC692C2B79362700E625B9 /* StoreKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = StoreKit.framework; path = System/Library/Frameworks/StoreKit.framework; sourceTree = SDKROOT; };
B9DC692F2B79378400E625B9 /* ThreadedPlus.storekit */ = {isa = PBXFileReference; lastKnownFileType = text; path = ThreadedPlus.storekit; sourceTree = "<group>"; };
B9DC692F2B79378400E625B9 /* BubblePlus.storekit */ = {isa = PBXFileReference; lastKnownFileType = text; path = BubblePlus.storekit; sourceTree = "<group>"; };
B9EBE8552B47256900FB594D /* PostAttachment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PostAttachment.swift; sourceTree = "<group>"; };
B9EBE8572B474FD600FB594D /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
B9F8FA152B5D3AC30044DAB4 /* SafariView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SafariView.swift; sourceTree = "<group>"; };
B9FA6E742B82367B00D63E30 /* AttachmentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AttachmentView.swift; sourceTree = "<group>"; };
B9FA6E762B82788A00D63E30 /* AccountRow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountRow.swift; sourceTree = "<group>"; };
B9FB94572B2DEECE00D81C07 /* Threaded.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Threaded.app; sourceTree = BUILT_PRODUCTS_DIR; };
B9FB945A2B2DEECE00D81C07 /* ThreadedApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThreadedApp.swift; sourceTree = "<group>"; };
B9FB94572B2DEECE00D81C07 /* Bubble.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Bubble.app; sourceTree = BUILT_PRODUCTS_DIR; };
B9FB945A2B2DEECE00D81C07 /* BubbleApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BubbleApp.swift; sourceTree = "<group>"; };
B9FB945C2B2DEECE00D81C07 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = "<group>"; };
B9FB94602B2DEECF00D81C07 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
B9FB94632B2DEECF00D81C07 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = "<group>"; };
@ -371,7 +371,7 @@
B9FB949E2B2EF0F200D81C07 /* MastodonRequest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonRequest.swift; sourceTree = "<group>"; };
B9FB94A02B2EF23100D81C07 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
B9FB94A12B2EF24A00D81C07 /* AppInfo.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppInfo.swift; sourceTree = "<group>"; };
B9FB94A72B2F009F00D81C07 /* ThreadedAuthService.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = ThreadedAuthService.appex; sourceTree = BUILT_PRODUCTS_DIR; };
B9FB94A72B2F009F00D81C07 /* BubbleAuthService.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = BubbleAuthService.appex; sourceTree = BUILT_PRODUCTS_DIR; };
B9FB94A92B2F009F00D81C07 /* AuthenticationServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AuthenticationServices.framework; path = System/Library/Frameworks/AuthenticationServices.framework; sourceTree = SDKROOT; };
B9FB94AC2B2F009F00D81C07 /* AuthenticationViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthenticationViewController.swift; sourceTree = "<group>"; };
B9FB94AF2B2F009F00D81C07 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/AuthenticationViewController.xib; sourceTree = "<group>"; };
@ -462,11 +462,11 @@
path = Post;
sourceTree = "<group>";
};
B9C20D0E2B921C78004DC9B3 /* ThreadedWidgets */ = {
B9C20D0E2B921C78004DC9B3 /* BubbleWidgets */ = {
isa = PBXGroup;
children = (
B9C20D582B923CDD004DC9B3 /* ThreadedWidgetsExtension.entitlements */,
B9C20D0F2B921C78004DC9B3 /* ThreadedWidgetsBundle.swift */,
B9C20D582B923CDD004DC9B3 /* BubbleWidgetsExtension.entitlements */,
B9C20D0F2B921C78004DC9B3 /* BubbleWidgetsBundle.swift */,
B9C20D112B921C78004DC9B3 /* FollowCountWidget.swift */,
B9B469AF2B9A275F00AD5585 /* FollowGoalWidget.swift */,
B9A80DDD2C67BFF800DE3D88 /* CreatePostWidget.swift */,
@ -475,7 +475,7 @@
B9C20D152B921C7B004DC9B3 /* Assets.xcassets */,
B9C20D172B921C7B004DC9B3 /* Info.plist */,
);
path = ThreadedWidgets;
path = BubbleWidgets;
sourceTree = "<group>";
};
B9D9C6BF2B6A56D500C26A41 /* Notifications */ = {
@ -490,7 +490,7 @@
B9DC692E2B79375B00E625B9 /* Store */ = {
isa = PBXGroup;
children = (
B9DC692F2B79378400E625B9 /* ThreadedPlus.storekit */,
B9DC692F2B79378400E625B9 /* BubblePlus.storekit */,
B95ED2362B87C9550055F5BD /* StoreKitTestCertificate.cer */,
);
path = Store;
@ -500,8 +500,8 @@
isa = PBXGroup;
children = (
B9CC45B92B40AA1E001E4FA5 /* README.md */,
B9FB94592B2DEECE00D81C07 /* Threaded */,
B9C20D0E2B921C78004DC9B3 /* ThreadedWidgets */,
B9FB94592B2DEECE00D81C07 /* Bubble */,
B9C20D0E2B921C78004DC9B3 /* BubbleWidgets */,
B9FB94AB2B2F009F00D81C07 /* AuthService */,
B9FB94A82B2F009F00D81C07 /* Frameworks */,
B97BCE292B3ED2C80044756D /* LICENSE */,
@ -513,20 +513,20 @@
B9FB94582B2DEECE00D81C07 /* Products */ = {
isa = PBXGroup;
children = (
B9FB94572B2DEECE00D81C07 /* Threaded.app */,
B9FB94A72B2F009F00D81C07 /* ThreadedAuthService.appex */,
B9C20D092B921C78004DC9B3 /* ThreadedWidgetsExtension.appex */,
B9FB94572B2DEECE00D81C07 /* Bubble.app */,
B9FB94A72B2F009F00D81C07 /* BubbleAuthService.appex */,
B9C20D092B921C78004DC9B3 /* BubbleWidgetsExtension.appex */,
);
name = Products;
sourceTree = "<group>";
};
B9FB94592B2DEECE00D81C07 /* Threaded */ = {
B9FB94592B2DEECE00D81C07 /* Bubble */ = {
isa = PBXGroup;
children = (
B9C20D592B923D53004DC9B3 /* Threaded.entitlements */,
B9C20D592B923D53004DC9B3 /* Bubble.entitlements */,
B9FB94A02B2EF23100D81C07 /* Info.plist */,
B9029FC12B81259400AA9B68 /* Secret.plist */,
B9FB945A2B2DEECE00D81C07 /* ThreadedApp.swift */,
B9FB945A2B2DEECE00D81C07 /* BubbleApp.swift */,
B9EBE8572B474FD600FB594D /* AppDelegate.swift */,
B9FB946E2B2DF3BB00D81C07 /* Components */,
B9FB946D2B2DF3B800D81C07 /* Views */,
@ -537,7 +537,7 @@
B9FB948F2B2E2B0E00D81C07 /* Localizable.xcstrings */,
B9CFC43A2B4F08C9004CFCB7 /* LaunchStoryboard.storyboard */,
);
path = Threaded;
path = Bubble;
sourceTree = "<group>";
};
B9FB94622B2DEECF00D81C07 /* Preview Content */ = {
@ -672,9 +672,9 @@
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
B9C20D082B921C78004DC9B3 /* ThreadedWidgetsExtension */ = {
B9C20D082B921C78004DC9B3 /* BubbleWidgetsExtension */ = {
isa = PBXNativeTarget;
buildConfigurationList = B9C20D1D2B921C7B004DC9B3 /* Build configuration list for PBXNativeTarget "ThreadedWidgetsExtension" */;
buildConfigurationList = B9C20D1D2B921C7B004DC9B3 /* Build configuration list for PBXNativeTarget "BubbleWidgetsExtension" */;
buildPhases = (
B9C20D052B921C78004DC9B3 /* Sources */,
B9C20D062B921C78004DC9B3 /* Frameworks */,
@ -684,7 +684,7 @@
);
dependencies = (
);
name = ThreadedWidgetsExtension;
name = BubbleWidgetsExtension;
packageProductDependencies = (
B9A80E842C67C7C300DE3D88 /* SwiftSoup */,
B9A80E862C67C7C300DE3D88 /* Nuke */,
@ -698,12 +698,12 @@
B9A80E962C67C7C300DE3D88 /* RevenueCatUI */,
);
productName = ThreadedWidgetsExtension;
productReference = B9C20D092B921C78004DC9B3 /* ThreadedWidgetsExtension.appex */;
productReference = B9C20D092B921C78004DC9B3 /* BubbleWidgetsExtension.appex */;
productType = "com.apple.product-type.app-extension";
};
B9FB94562B2DEECE00D81C07 /* Threaded */ = {
B9FB94562B2DEECE00D81C07 /* Bubble */ = {
isa = PBXNativeTarget;
buildConfigurationList = B9FB94672B2DEECF00D81C07 /* Build configuration list for PBXNativeTarget "Threaded" */;
buildConfigurationList = B9FB94672B2DEECF00D81C07 /* Build configuration list for PBXNativeTarget "Bubble" */;
buildPhases = (
B9FB94532B2DEECE00D81C07 /* Sources */,
B9FB94542B2DEECE00D81C07 /* Frameworks */,
@ -717,7 +717,7 @@
B9FB94B32B2F009F00D81C07 /* PBXTargetDependency */,
B9C20D192B921C7B004DC9B3 /* PBXTargetDependency */,
);
name = Threaded;
name = Bubble;
packageProductDependencies = (
B9FB94832B2E20AF00D81C07 /* SwiftSoup */,
B93B676C2B42C94F000892E9 /* Nuke */,
@ -730,12 +730,12 @@
B95ED2342B8707D60055F5BD /* RevenueCatUI */,
);
productName = Threaded;
productReference = B9FB94572B2DEECE00D81C07 /* Threaded.app */;
productReference = B9FB94572B2DEECE00D81C07 /* Bubble.app */;
productType = "com.apple.product-type.application";
};
B9FB94A62B2F009F00D81C07 /* ThreadedAuthService */ = {
B9FB94A62B2F009F00D81C07 /* BubbleAuthService */ = {
isa = PBXNativeTarget;
buildConfigurationList = B9FB94B52B2F009F00D81C07 /* Build configuration list for PBXNativeTarget "ThreadedAuthService" */;
buildConfigurationList = B9FB94B52B2F009F00D81C07 /* Build configuration list for PBXNativeTarget "BubbleAuthService" */;
buildPhases = (
B9FB94A32B2F009F00D81C07 /* Sources */,
B9FB94A42B2F009F00D81C07 /* Frameworks */,
@ -745,9 +745,9 @@
);
dependencies = (
);
name = ThreadedAuthService;
name = BubbleAuthService;
productName = AuthService;
productReference = B9FB94A72B2F009F00D81C07 /* ThreadedAuthService.appex */;
productReference = B9FB94A72B2F009F00D81C07 /* BubbleAuthService.appex */;
productType = "com.apple.product-type.app-extension";
};
/* End PBXNativeTarget section */
@ -771,7 +771,7 @@
};
};
};
buildConfigurationList = B9FB94522B2DEECE00D81C07 /* Build configuration list for PBXProject "Threaded" */;
buildConfigurationList = B9FB94522B2DEECE00D81C07 /* Build configuration list for PBXProject "Bubble" */;
compatibilityVersion = "Xcode 14.0";
developmentRegion = en;
hasScannedForEncodings = 0;
@ -792,9 +792,9 @@
projectDirPath = "";
projectRoot = "";
targets = (
B9FB94562B2DEECE00D81C07 /* Threaded */,
B9C20D082B921C78004DC9B3 /* ThreadedWidgetsExtension */,
B9FB94A62B2F009F00D81C07 /* ThreadedAuthService */,
B9FB94562B2DEECE00D81C07 /* Bubble */,
B9C20D082B921C78004DC9B3 /* BubbleWidgetsExtension */,
B9FB94A62B2F009F00D81C07 /* BubbleAuthService */,
);
};
/* End PBXProject section */
@ -814,7 +814,7 @@
buildActionMask = 2147483647;
files = (
B97BCE282B3ED2A80044756D /* .gitignore in Resources */,
B9DC69302B79378400E625B9 /* ThreadedPlus.storekit in Resources */,
B9DC69302B79378400E625B9 /* BubblePlus.storekit in Resources */,
B9FB94642B2DEECF00D81C07 /* Preview Assets.xcassets in Resources */,
B9FB94612B2DEECF00D81C07 /* Assets.xcassets in Resources */,
B9029FC22B81259400AA9B68 /* Secret.plist in Resources */,
@ -842,7 +842,7 @@
files = (
B9C20D122B921C78004DC9B3 /* FollowCountWidget.swift in Sources */,
B9A80DDE2C67BFF800DE3D88 /* CreatePostWidget.swift in Sources */,
B9C20D102B921C78004DC9B3 /* ThreadedWidgetsBundle.swift in Sources */,
B9C20D102B921C78004DC9B3 /* BubbleWidgetsBundle.swift in Sources */,
B90DEB1F2C822C2700D06121 /* StatusDraft.swift in Sources */,
B90DEB232C822ED400D06121 /* PostDraftView.swift in Sources */,
B9A80DE02C67C2D000DE3D88 /* Navigator.swift in Sources */,
@ -975,7 +975,7 @@
B94CF7652C8DE9AB00DFFF8F /* PlusNecessaryView.swift in Sources */,
B934EA242BAB5E7F001F4345 /* RestrictedView.swift in Sources */,
B9FB94722B2DF49700D81C07 /* ConnectView.swift in Sources */,
B9FB945B2B2DEECE00D81C07 /* ThreadedApp.swift in Sources */,
B9FB945B2B2DEECE00D81C07 /* BubbleApp.swift in Sources */,
B9FB94862B2E211200D81C07 /* Account+Elms.swift in Sources */,
B9A80DDF2C67C27B00DE3D88 /* AppIntent.swift in Sources */,
B97491E32B6E96700098BC48 /* SymbolWidth.swift in Sources */,
@ -1038,12 +1038,12 @@
/* Begin PBXTargetDependency section */
B9C20D192B921C7B004DC9B3 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = B9C20D082B921C78004DC9B3 /* ThreadedWidgetsExtension */;
target = B9C20D082B921C78004DC9B3 /* BubbleWidgetsExtension */;
targetProxy = B9C20D182B921C7B004DC9B3 /* PBXContainerItemProxy */;
};
B9FB94B32B2F009F00D81C07 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = B9FB94A62B2F009F00D81C07 /* ThreadedAuthService */;
target = B9FB94A62B2F009F00D81C07 /* BubbleAuthService */;
targetProxy = B9FB94B22B2F009F00D81C07 /* PBXContainerItemProxy */;
};
/* End PBXTargetDependency section */
@ -1065,13 +1065,13 @@
buildSettings = {
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground;
CODE_SIGN_ENTITLEMENTS = ThreadedWidgets/ThreadedWidgetsExtension.entitlements;
CODE_SIGN_ENTITLEMENTS = BubbleWidgets/BubbleWidgetsExtension.entitlements;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 702;
DEVELOPMENT_TEAM = HB5P3BML86;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = ThreadedWidgets/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = ThreadedWidgets;
INFOPLIST_FILE = BubbleWidgets/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = Bubble;
INFOPLIST_KEY_NSHumanReadableCopyright = "";
IPHONEOS_DEPLOYMENT_TARGET = 17.0;
LD_RUNPATH_SEARCH_PATHS = (
@ -1100,13 +1100,13 @@
buildSettings = {
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground;
CODE_SIGN_ENTITLEMENTS = ThreadedWidgets/ThreadedWidgetsExtension.entitlements;
CODE_SIGN_ENTITLEMENTS = BubbleWidgets/BubbleWidgetsExtension.entitlements;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 702;
DEVELOPMENT_TEAM = HB5P3BML86;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = ThreadedWidgets/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = ThreadedWidgets;
INFOPLIST_FILE = BubbleWidgets/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = Bubble;
INFOPLIST_KEY_NSHumanReadableCopyright = "";
IPHONEOS_DEPLOYMENT_TARGET = 17.0;
LD_RUNPATH_SEARCH_PATHS = (
@ -1263,17 +1263,17 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = YES;
CODE_SIGN_ENTITLEMENTS = Threaded/Threaded.entitlements;
CODE_SIGN_ENTITLEMENTS = Bubble/Bubble.entitlements;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 702;
DEVELOPMENT_ASSET_PATHS = "\"Threaded/Preview Content\"";
DEVELOPMENT_ASSET_PATHS = "";
DEVELOPMENT_TEAM = HB5P3BML86;
ENABLE_PREVIEWS = YES;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = Threaded/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = Threaded;
INFOPLIST_FILE = Bubble/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = Bubble;
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.social-networking";
INFOPLIST_KEY_NSPhotoLibraryAddUsageDescription = "Threaded allows you to save images you see in posts";
INFOPLIST_KEY_NSPhotoLibraryAddUsageDescription = "Bubble allows you to save images you see in posts";
INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
INFOPLIST_KEY_UILaunchStoryboardName = LaunchStoryboard.storyboard;
@ -1305,17 +1305,17 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = YES;
CODE_SIGN_ENTITLEMENTS = Threaded/Threaded.entitlements;
CODE_SIGN_ENTITLEMENTS = Bubble/Bubble.entitlements;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 702;
DEVELOPMENT_ASSET_PATHS = "\"Threaded/Preview Content\"";
DEVELOPMENT_ASSET_PATHS = "";
DEVELOPMENT_TEAM = HB5P3BML86;
ENABLE_PREVIEWS = YES;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = Threaded/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = Threaded;
INFOPLIST_FILE = Bubble/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = Bubble;
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.social-networking";
INFOPLIST_KEY_NSPhotoLibraryAddUsageDescription = "Threaded allows you to save images you see in posts";
INFOPLIST_KEY_NSPhotoLibraryAddUsageDescription = "Bubble allows you to save images you see in posts";
INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
INFOPLIST_KEY_UILaunchStoryboardName = LaunchStoryboard.storyboard;
@ -1402,7 +1402,7 @@
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
B9C20D1D2B921C7B004DC9B3 /* Build configuration list for PBXNativeTarget "ThreadedWidgetsExtension" */ = {
B9C20D1D2B921C7B004DC9B3 /* Build configuration list for PBXNativeTarget "BubbleWidgetsExtension" */ = {
isa = XCConfigurationList;
buildConfigurations = (
B9C20D1B2B921C7B004DC9B3 /* Debug */,
@ -1411,7 +1411,7 @@
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
B9FB94522B2DEECE00D81C07 /* Build configuration list for PBXProject "Threaded" */ = {
B9FB94522B2DEECE00D81C07 /* Build configuration list for PBXProject "Bubble" */ = {
isa = XCConfigurationList;
buildConfigurations = (
B9FB94652B2DEECF00D81C07 /* Debug */,
@ -1420,7 +1420,7 @@
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
B9FB94672B2DEECF00D81C07 /* Build configuration list for PBXNativeTarget "Threaded" */ = {
B9FB94672B2DEECF00D81C07 /* Build configuration list for PBXNativeTarget "Bubble" */ = {
isa = XCConfigurationList;
buildConfigurations = (
B9FB94682B2DEECF00D81C07 /* Debug */,
@ -1429,7 +1429,7 @@
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
B9FB94B52B2F009F00D81C07 /* Build configuration list for PBXNativeTarget "ThreadedAuthService" */ = {
B9FB94B52B2F009F00D81C07 /* Build configuration list for PBXNativeTarget "BubbleAuthService" */ = {
isa = XCConfigurationList;
buildConfigurations = (
B9FB94B62B2F009F00D81C07 /* Debug */,

View File

@ -15,9 +15,9 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "B9FB94562B2DEECE00D81C07"
BuildableName = "Threaded.app"
BlueprintName = "Threaded"
ReferencedContainer = "container:Threaded.xcodeproj">
BuildableName = "Bubble.app"
BlueprintName = "Bubble"
ReferencedContainer = "container:Bubble.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
@ -45,13 +45,13 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "B9FB94562B2DEECE00D81C07"
BuildableName = "Threaded.app"
BlueprintName = "Threaded"
ReferencedContainer = "container:Threaded.xcodeproj">
BuildableName = "Bubble.app"
BlueprintName = "Bubble"
ReferencedContainer = "container:Bubble.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<StoreKitConfigurationFileReference
identifier = "../../Threaded/Store/ThreadedPlus.storekit">
identifier = "../../Bubble/Store/BubblePlus.storekit">
</StoreKitConfigurationFileReference>
</LaunchAction>
<ProfileAction
@ -65,9 +65,9 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "B9FB94562B2DEECE00D81C07"
BuildableName = "Threaded.app"
BlueprintName = "Threaded"
ReferencedContainer = "container:Threaded.xcodeproj">
BuildableName = "Bubble.app"
BlueprintName = "Bubble"
ReferencedContainer = "container:Bubble.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>

View File

@ -16,9 +16,9 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "B9FB94A62B2F009F00D81C07"
BuildableName = "ThreadedAuthService.appex"
BlueprintName = "ThreadedAuthService"
ReferencedContainer = "container:Threaded.xcodeproj">
BuildableName = "BubbleAuthService.appex"
BlueprintName = "BubbleAuthService"
ReferencedContainer = "container:Bubble.xcodeproj">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
@ -30,9 +30,9 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "B9FB94562B2DEECE00D81C07"
BuildableName = "Threaded.app"
BlueprintName = "Threaded"
ReferencedContainer = "container:Threaded.xcodeproj">
BuildableName = "Bubble.app"
BlueprintName = "Bubble"
ReferencedContainer = "container:Bubble.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
@ -61,9 +61,9 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "B9FB94562B2DEECE00D81C07"
BuildableName = "Threaded.app"
BlueprintName = "Threaded"
ReferencedContainer = "container:Threaded.xcodeproj">
BuildableName = "Bubble.app"
BlueprintName = "Bubble"
ReferencedContainer = "container:Bubble.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</LaunchAction>
@ -80,9 +80,9 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "B9FB94562B2DEECE00D81C07"
BuildableName = "Threaded.app"
BlueprintName = "Threaded"
ReferencedContainer = "container:Threaded.xcodeproj">
BuildableName = "Bubble.app"
BlueprintName = "Bubble"
ReferencedContainer = "container:Bubble.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>

View File

@ -18,7 +18,7 @@
BlueprintIdentifier = "B9B469B62B9A7E6800AD5585"
BuildableName = "Threaded.app"
BlueprintName = "ThreadedWatch Watch App"
ReferencedContainer = "container:Threaded.xcodeproj">
ReferencedContainer = "container:Bubble.xcodeproj">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
@ -30,9 +30,9 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "B9FB94562B2DEECE00D81C07"
BuildableName = "Threaded.app"
BlueprintName = "Threaded"
ReferencedContainer = "container:Threaded.xcodeproj">
BuildableName = "Bubble.app"
BlueprintName = "Bubble"
ReferencedContainer = "container:Bubble.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
@ -61,7 +61,7 @@
BlueprintIdentifier = "B9B469B62B9A7E6800AD5585"
BuildableName = "Threaded.app"
BlueprintName = "ThreadedWatch Watch App"
ReferencedContainer = "container:Threaded.xcodeproj">
ReferencedContainer = "container:Bubble.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<LocationScenarioReference
@ -82,7 +82,7 @@
BlueprintIdentifier = "B9B469B62B9A7E6800AD5585"
BuildableName = "Threaded.app"
BlueprintName = "ThreadedWatch Watch App"
ReferencedContainer = "container:Threaded.xcodeproj">
ReferencedContainer = "container:Bubble.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<MacroExpansion>
@ -91,7 +91,7 @@
BlueprintIdentifier = "B9B469B62B9A7E6800AD5585"
BuildableName = "Threaded.app"
BlueprintName = "ThreadedWatch Watch App"
ReferencedContainer = "container:Threaded.xcodeproj">
ReferencedContainer = "container:Bubble.xcodeproj">
</BuildableReference>
</MacroExpansion>
</ProfileAction>

View File

@ -17,9 +17,9 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "B9C20D082B921C78004DC9B3"
BuildableName = "ThreadedWidgetsExtension.appex"
BlueprintName = "ThreadedWidgetsExtension"
ReferencedContainer = "container:Threaded.xcodeproj">
BuildableName = "BubbleWidgetsExtension.appex"
BlueprintName = "BubbleWidgetsExtension"
ReferencedContainer = "container:Bubble.xcodeproj">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
@ -31,9 +31,9 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "B9FB94562B2DEECE00D81C07"
BuildableName = "Threaded.app"
BlueprintName = "Threaded"
ReferencedContainer = "container:Threaded.xcodeproj">
BuildableName = "Bubble.app"
BlueprintName = "Bubble"
ReferencedContainer = "container:Bubble.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
@ -63,18 +63,18 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "B9C20D082B921C78004DC9B3"
BuildableName = "ThreadedWidgetsExtension.appex"
BlueprintName = "ThreadedWidgetsExtension"
ReferencedContainer = "container:Threaded.xcodeproj">
BuildableName = "BubbleWidgetsExtension.appex"
BlueprintName = "BubbleWidgetsExtension"
ReferencedContainer = "container:Bubble.xcodeproj">
</BuildableReference>
</RemoteRunnable>
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "B9FB94562B2DEECE00D81C07"
BuildableName = "Threaded.app"
BlueprintName = "Threaded"
ReferencedContainer = "container:Threaded.xcodeproj">
BuildableName = "Bubble.app"
BlueprintName = "Bubble"
ReferencedContainer = "container:Bubble.xcodeproj">
</BuildableReference>
</MacroExpansion>
<EnvironmentVariables>
@ -108,9 +108,9 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "B9FB94562B2DEECE00D81C07"
BuildableName = "Threaded.app"
BlueprintName = "Threaded"
ReferencedContainer = "container:Threaded.xcodeproj">
BuildableName = "Bubble.app"
BlueprintName = "Bubble"
ReferencedContainer = "container:Bubble.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>

View File

@ -65,7 +65,7 @@ public class AppDelegate: NSObject, UIWindowSceneDelegate, Sendable, UIApplicati
/// This function returns a fake "true" value every time whatever the customer info is
static func hasPlus() -> Bool {
self.premium = false
self.premium = true
return true
}

View File

@ -1,7 +1,7 @@
{
"images" : [
{
"filename" : "AppIcon-White.png",
"filename" : "HeroIcon_white_x1024.png",
"idiom" : "universal",
"platform" : "ios",
"size" : "1024x1024"
@ -13,7 +13,7 @@
"value" : "dark"
}
],
"filename" : "AppIcon.png",
"filename" : "HeroIcon_black_x1024.png",
"idiom" : "universal",
"platform" : "ios",
"size" : "1024x1024"
@ -25,7 +25,7 @@
"value" : "tinted"
}
],
"filename" : "AppIcon 1.png",
"filename" : "HeroIcon_black_x1024 1.png",
"idiom" : "universal",
"platform" : "ios",
"size" : "1024x1024"

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 429 KiB

View File

@ -1,7 +1,7 @@
{
"images" : [
{
"filename" : "AppIcon-White.png",
"filename" : "HeroIcon_trans_wh.png",
"idiom" : "universal"
},
{
@ -11,7 +11,7 @@
"value" : "dark"
}
],
"filename" : "AppIcon.png",
"filename" : "HeroIcon_trans_bl.png",
"idiom" : "universal"
}
],

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 260 KiB

View File

@ -1,7 +1,7 @@
{
"images" : [
{
"filename" : "PlusIcon_black.png",
"filename" : "HeroPlus_trans_wh.png",
"idiom" : "universal"
},
{
@ -11,7 +11,7 @@
"value" : "dark"
}
],
"filename" : "PlusIcon_white.png",
"filename" : "HeroPlus_trans_bl.png",
"idiom" : "universal"
}
],

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 MiB

View File

Before

Width:  |  Height:  |  Size: 116 KiB

After

Width:  |  Height:  |  Size: 116 KiB

View File

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

View File

Before

Width:  |  Height:  |  Size: 145 KiB

After

Width:  |  Height:  |  Size: 145 KiB

View File

@ -5,7 +5,7 @@ import TipKit
import RevenueCat
@main
struct ThreadedApp: App {
struct BubbleApp: App {
init() {
guard let plist = AppDelegate.readSecret() else { fatalError("Missing Secret.plist file") }
@ -18,7 +18,7 @@ struct ThreadedApp: App {
}
}
ThreadedShortcuts.updateAppShortcutParameters() //might not work?
BubbleShortcuts.updateAppShortcutParameters() //might not work?
}
var body: some Scene {
@ -29,7 +29,7 @@ struct ThreadedApp: App {
HapticManager.prepareHaptics()
}
.task {
#if DEBUG
#if targetEnvironment(simulator)
Tips.showAllTipsForTesting()
UserDefaults.standard.set("ABC", forKey: "lastVersion")
#endif

View File

@ -13,7 +13,7 @@ struct PlusNecessaryView: View {
VStack(spacing: 7.5) {
if let feature = lockedFeature {
HStack {
Text("shop.threaded-plus.with")
Text("shop.bubble-plus.with")
.foregroundStyle(Color.black)
.font(.callout.width(.expanded).weight(.bold))
@ -50,11 +50,11 @@ struct PlusNecessaryView: View {
.frame(width: 50, height: 50)
.padding(.vertical)
Text("shop.threaded-plus.required")
Text("shop.bubble-plus.required")
.font(.title2.bold())
.lineLimit(1)
Text("shop.threaded-plus.required.description")
Text("shop.bubble-plus.required.description")
.foregroundStyle(Color.gray)
.font(.callout)
.lineLimit(2, reservesSpace: true)
@ -66,7 +66,7 @@ struct PlusNecessaryView: View {
UniversalNavigator.static.presentedCover = .shop
} label: {
Label {
Text("shop.threaded-plus.learn")
Text("shop.bubble-plus.learn")
} icon: {
Image("HeroPlus")
.resizable()

View File

@ -4,10 +4,10 @@ import Foundation
public enum AppInfo {
public static let scopes = "read write follow push"
public static let scheme = "threadedapp://"
public static let clientName = "ThreadedApp"
public static let scheme = "bubbleapp://"
public static let clientName = "BubbleApp"
public static let defaultServer = "mastodon.social"
public static let website = "https://apps.lumaa.fr/app/threaded"
public static let website = "https://apps.lumaa.fr/app/bubble"
}
extension AppInfo {

View File

@ -10,10 +10,10 @@
<key>CFBundleURLIconFile</key>
<string></string>
<key>CFBundleURLName</key>
<string>threadedapp</string>
<string>bubbleapp</string>
<key>CFBundleURLSchemes</key>
<array>
<string>threadedapp</string>
<string>bubbleapp</string>
</array>
</dict>
</array>

View File

@ -66,13 +66,13 @@
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "About Threaded"
"value" : "About Bubble"
}
},
"fr" : {
"stringUnit" : {
"state" : "translated",
"value" : "À propos de Threaded"
"value" : "À propos de Bubble"
}
}
}
@ -82,13 +82,13 @@
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Threaded is a very simple Mastodon client, that is meant to look like the newest social media Threads made by Meta Platforms. It integrates perfectly with your Mastodon account, and matches the Threads vibe, while having Mastodon-only features.\n\nThreaded is a 100% free, made in France using SwiftUI, [open-source](https://github.com/lumaa-dev/ThreadedApp), and doesn't violate [your privacy](https://apps.lumaa.fr/legal/privacy).\n\nThreaded is not related or affiliated to Meta Platforms."
"value" : "Bubble is a very simple Mastodon client, that is meant to look like the newest social media Threads made by Meta Platforms. It integrates perfectly with your Mastodon account, and matches the Threads vibe, while having Mastodon-only features.\n\nBubble is a 100% free, made in France using SwiftUI, [open-source](https://github.com/lumaa-dev/BubbleApp), and doesn't violate [your privacy](https://apps.lumaa.fr/legal/privacy).\n\nBubble is not related or affiliated to Meta Platforms."
}
},
"fr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Threaded is a very simple Mastodon client, that is meant to look like the newest social media Threads made by Meta Platforms. It integrates perfectly with your Mastodon account, and matches the Threads vibe, while having Mastodon-only features.\n\nThreaded is a 100% free, made in France using SwiftUI, [open-source](https://github.com/lumaa-dev/ThreadedApp), and doesn't violate [your privacy](https://apps.lumaa.fr/legal/privacy).\n\nThreaded is not related or affiliated to Meta Platforms."
"value" : "Bubble is a very simple Mastodon client, that is meant to look like the newest social media Threads made by Meta Platforms. It integrates perfectly with your Mastodon account, and matches the Threads vibe, while having Mastodon-only features.\n\nBubble is a 100% free, made in France using SwiftUI, [open-source](https://github.com/lumaa-dev/BubbleApp), and doesn't violate [your privacy](https://apps.lumaa.fr/legal/privacy).\n\nBubble is not related or affiliated to Meta Platforms."
}
}
}
@ -98,13 +98,13 @@
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Threaded uses third-party open-source libraries and code:\n- [IceCubesApp](https://github.com/dimillian/IceCubesApp)\n- [SwiftSoup](https://github.com/scinfu/SwiftSoup)\n- [Nuke](https://github.com/kean/Nuke)\n- [EmojiText](https://github.com/divadretlaw/EmojiText)\n- [KeychainSwift](https://github.com/evgenyneu/keychain-swift)\n\nSpecial thanks to:\n- [@damon@social.wedistribute.org](https://social.wedistribute.org/@damon)\n- Beezus\n- Beta testers on TestFlight"
"value" : "Bubble uses third-party open-source libraries and code:\n- [IceCubesApp](https://github.com/dimillian/IceCubesApp)\n- [SwiftSoup](https://github.com/scinfu/SwiftSoup)\n- [Nuke](https://github.com/kean/Nuke)\n- [EmojiText](https://github.com/divadretlaw/EmojiText)\n- [KeychainSwift](https://github.com/evgenyneu/keychain-swift)\n\nSpecial thanks to:\n- [@damon@social.wedistribute.org](https://social.wedistribute.org/@damon)\n- Beezus\n- Beta testers on TestFlight"
}
},
"fr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Threaded uses third-party open-source libraries and code:\n- [IceCubesApp](https://github.com/dimillian/IceCubesApp)\n- [SwiftSoup](https://github.com/scinfu/SwiftSoup)\n- [Nuke](https://github.com/kean/Nuke)\n- [EmojiText](https://github.com/divadretlaw/EmojiText)\n- [KeychainSwift](https://github.com/evgenyneu/keychain-swift)\n\nSpecial thanks to:\n- [@damon@social.wedistribute.org](https://social.wedistribute.org/@damon)\n- Beezus\n- Beta testers on TestFlight"
"value" : "Bubble uses third-party open-source libraries and code:\n- [IceCubesApp](https://github.com/dimillian/IceCubesApp)\n- [SwiftSoup](https://github.com/scinfu/SwiftSoup)\n- [Nuke](https://github.com/kean/Nuke)\n- [EmojiText](https://github.com/divadretlaw/EmojiText)\n- [KeychainSwift](https://github.com/evgenyneu/keychain-swift)\n\nSpecial thanks to:\n- [@damon@social.wedistribute.org](https://social.wedistribute.org/@damon)\n- Beezus\n- Beta testers on TestFlight"
}
}
}
@ -130,13 +130,13 @@
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "ThreadedApp v%@"
"value" : "BubbleApp v%@"
}
},
"fr" : {
"stringUnit" : {
"state" : "translated",
"value" : "ThreadedApp v%@"
"value" : "BubbleApp v%@"
}
}
}
@ -722,13 +722,13 @@
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Threaded Developer"
"value" : "Bubble Developer"
}
},
"fr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Développeur de Threaded"
"value" : "Développeur de Bubble"
}
}
}
@ -1210,13 +1210,13 @@
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Inside Threaded"
"value" : "Inside Bubble"
}
},
"fr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Par Threaded"
"value" : "Par Bubble"
}
}
}
@ -1658,13 +1658,13 @@
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Opens the Threaded app with the post composer "
"value" : "Opens the Bubble app with the post composer "
}
},
"fr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Ouvre lapplication Threaded avec le compositeur de publications"
"value" : "Ouvre lapplication Bubble avec le compositeur de publications"
}
}
}
@ -1818,13 +1818,13 @@
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "The instance has been detected to be dangerous, Threaded does not take responsibility for any content posted or seen on this instance and will not provide support. Do you agree to take FULL responsibility?"
"value" : "The instance has been detected to be dangerous, Bubble does not take responsibility for any content posted or seen on this instance and will not provide support. Do you agree to take FULL responsibility?"
}
},
"fr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Cette instance a été détectée comme étant dangereuse, Threaded ne prend pas la responsabilité pour tout contenu posté ou vu dans cette instance et ne fournira pas d'aide. Êtes-vous d'accord pour prendre la TOTALE responsabilité ?"
"state" : "needs_review",
"value" : "Cette instance a été détectée comme étant dangereuse, Bubble ne prend pas la responsabilité pour tout contenu posté ou vu dans cette instance et ne fournira pas d'aide. Êtes-vous d'accord pour prendre la TOTALE responsabilité ?"
}
}
}
@ -1866,13 +1866,13 @@
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Log in your Mastodon account using its instance URL. You cannot create an account using Threaded."
"value" : "Log in your Mastodon account using its instance URL. You cannot create an account using Bubble."
}
},
"fr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Connectez-vous à l'aide de votre compte Mastodon en utilisant l'URL de votre instance. Vous ne pouvez pas créer de compte via Threaded"
"value" : "Connectez-vous à l'aide de votre compte Mastodon en utilisant l'URL de votre instance. Vous ne pouvez pas créer de compte via Bubble"
}
}
}
@ -1978,13 +1978,13 @@
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Welcome to Threaded!"
"value" : "Welcome to Bubble!"
}
},
"fr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Bienvenue sur Threaded !"
"value" : "Bienvenue sur Bubble !"
}
}
}
@ -2938,6 +2938,214 @@
}
}
},
"shop.bubble-plus.dismiss" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Dismiss"
}
},
"fr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Annuler"
}
}
}
},
"shop.bubble-plus.learn" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Learn more"
}
},
"fr" : {
"stringUnit" : {
"state" : "translated",
"value" : "En savoir plus"
}
}
}
},
"shop.bubble-plus.lifetime" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Plus for a Lifetime"
}
},
"fr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Plus à vie"
}
}
}
},
"shop.bubble-plus.monthly" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Bubble+ - Monthly"
}
},
"fr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Bubble+ - Mensuel"
}
}
}
},
"shop.bubble-plus.monthly.price" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "For $1.99 per month, auto-renewed"
}
},
"fr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Pour 1.99€ par mois, renouvellement automatique"
}
}
}
},
"shop.bubble-plus.required" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Requires Plus"
}
},
"fr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Nécessite Plus"
}
}
}
},
"shop.bubble-plus.required.description" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Bubble+ is required to use a few additional features, like VIP, download attachments, and other."
}
},
"fr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Bubble+ est nécessaire pour utiliser certaines fonctionnalités additionnelles, comme être VIP, télécharger des pièce-jointes, et autres."
}
}
}
},
"shop.bubble-plus.subscribe" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Subscribe"
}
},
"fr" : {
"stringUnit" : {
"state" : "translated",
"value" : "S'abonner"
}
}
}
},
"shop.bubble-plus.subscription" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Plus as a Subscription"
}
},
"fr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Plus en tant qu'abonnement"
}
}
}
},
"shop.bubble-plus.subscription.description" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "The Bubble+ subscription adds additional new and unique features to Bubble! It also supports the development ❤️"
}
},
"fr" : {
"stringUnit" : {
"state" : "translated",
"value" : "L'abonnement Bubble+ ajoute des nouvelles et uniques fonctionnalités à Bubble ! Cela permet aussi de contribuer à son développement ❤️"
}
}
}
},
"shop.bubble-plus.with" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Only with"
}
},
"fr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Avec"
}
}
}
},
"shop.bubble-plus.yearly" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Bubble+ - Yearly"
}
},
"fr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Bubble+ - Annuel"
}
}
}
},
"shop.bubble-plus.yearly.price" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "For $17.99 per year, auto-renewed"
}
},
"fr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Pour 19.99€ par ans, renouvellement automatique"
}
}
}
},
"shop.features" : {
"localizations" : {
"en" : {
@ -3178,214 +3386,6 @@
}
}
},
"shop.threaded-plus.dismiss" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Dismiss"
}
},
"fr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Annuler"
}
}
}
},
"shop.threaded-plus.learn" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Learn more"
}
},
"fr" : {
"stringUnit" : {
"state" : "translated",
"value" : "En savoir plus"
}
}
}
},
"shop.threaded-plus.lifetime" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Plus for a Lifetime"
}
},
"fr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Plus à vie"
}
}
}
},
"shop.threaded-plus.monthly" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Threaded+ - Monthly"
}
},
"fr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Threaded+ - Mensuel"
}
}
}
},
"shop.threaded-plus.monthly.price" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "For $1.99 per month, auto-renewed"
}
},
"fr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Pour 1.99€ par mois, renouvellement automatique"
}
}
}
},
"shop.threaded-plus.required" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Requires Plus"
}
},
"fr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Nécessite Plus"
}
}
}
},
"shop.threaded-plus.required.description" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Threaded+ is required to use a few additional features, like VIP, download attachments, and other."
}
},
"fr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Threaded+ est nécessaire pour utiliser certaines fonctionnalités additionnelles, comme être VIP, télécharger des pièce-jointes, et autres."
}
}
}
},
"shop.threaded-plus.subscribe" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Subscribe"
}
},
"fr" : {
"stringUnit" : {
"state" : "translated",
"value" : "S'abonner"
}
}
}
},
"shop.threaded-plus.subscription" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Plus as a Subscription"
}
},
"fr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Plus en tant qu'abonnement"
}
}
}
},
"shop.threaded-plus.subscription.description" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "The Threaded+ subscription adds additional new and unique features to Threaded! It also supports the development ❤️"
}
},
"fr" : {
"stringUnit" : {
"state" : "translated",
"value" : "L'abonnement Threaded+ ajoute des nouvelles et uniques fonctionnalités à Threaded ! Cela permet aussi de contribuer à son développement ❤️"
}
}
}
},
"shop.threaded-plus.with" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Only with"
}
},
"fr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Avec"
}
}
}
},
"shop.threaded-plus.yearly" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Threaded+ - Yearly"
}
},
"fr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Threaded+ - Annuel"
}
}
}
},
"shop.threaded-plus.yearly.price" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "For $17.99 per year, auto-renewed"
}
},
"fr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Pour 19.99€ par ans, renouvellement automatique"
}
}
}
},
"status.action.bookmark" : {
"localizations" : {
"en" : {
@ -3551,13 +3551,13 @@
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Subscribe to Threaded+ to have more drafts"
"value" : "Subscribe to Bubble+ to have more drafts"
}
},
"fr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Abonnez-vous à Threaded+ pour obtenir plus de brouillons"
"value" : "Abonnez-vous à Bubble+ pour obtenir plus de brouillons"
}
}
}
@ -4307,13 +4307,13 @@
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Join the Threaded Discord server to receive help, talk about the Fediverse, and many other things"
"value" : "Join the Bubble Discord server to receive help, talk about the Fediverse, and many other things"
}
},
"fr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Rejoignez le serveur Discord Threaded pour recevoir de l'aide, parler du fédivers, et autres"
"value" : "Rejoignez le serveur Discord Bubble pour recevoir de l'aide, parler du fédivers, et autres"
}
}
}
@ -4323,13 +4323,13 @@
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Join Threaded"
"value" : "Join Bubble"
}
},
"fr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Rejoindre Threaded"
"value" : "Rejoindre Bubble"
}
}
}
@ -4371,13 +4371,13 @@
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "You cannot send e-mail via Threaded"
"value" : "You cannot send e-mail via Bubble"
}
},
"fr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Vous ne pouvez pas envoyer d'emails via Threaded"
"value" : "Vous ne pouvez pas envoyer d'emails via Bubble"
}
}
}
@ -4403,13 +4403,13 @@
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Threaded Support"
"value" : "Bubble Support"
}
},
"fr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Aide Threaded"
"value" : "Aide Bubble"
}
}
}
@ -4451,13 +4451,13 @@
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Join #threadedapp:matrix.org"
"value" : "Join #bubbleapp:matrix.org"
}
},
"fr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Rejoindre #threadedapp:matrix.org"
"value" : "Rejoindre #bubbleapp:matrix.org"
}
}
}
@ -4467,13 +4467,13 @@
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Mention Threaded"
"value" : "Mention Bubble"
}
},
"fr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Mentionner Threaded"
"value" : "Mentionner Bubble"
}
}
}
@ -4483,13 +4483,13 @@
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "You can mention the official Threaded account on Mastodon, and you will get the help you need"
"value" : "You can mention the official Bubble account on Mastodon, and you will get the help you need"
}
},
"fr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Vous pouvez mentionner le compte officiel de Threaded, puis vous aurez l'aide dont vous avez besoin"
"value" : "Vous pouvez mentionner le compte officiel de Bubble, puis vous aurez l'aide dont vous avez besoin"
}
}
}
@ -4767,13 +4767,13 @@
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Threaded is not affiliated to Mastodon. Threaded does not take responsabilities for posting misinforming or illegal content. Read your Mastodon instance's Terms of Service for more information."
"value" : "Bubble is not affiliated to Mastodon. Bubble does not take responsabilities for posting misinforming or illegal content. Read your Mastodon instance's Terms of Service for more information."
}
},
"fr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Threaded n'est pas affilié à Mastodon. Threaded ne prend aucune responsabilité sur la publication de contenu ayant de la désinformation ou du contenu illégal. Lisez les Condition d'utilisation de votre instance Mastodon pour plus d'information."
"value" : "Bubble n'est pas affilié à Mastodon. Bubble ne prend aucune responsabilité sur la publication de contenu ayant de la désinformation ou du contenu illégal. Lisez les Condition d'utilisation de votre instance Mastodon pour plus d'information."
}
}
}

Some files were not shown because too many files have changed in this diff Show More