diff --git a/Anytype.xcodeproj/project.pbxproj b/Anytype.xcodeproj/project.pbxproj index 791755ea28..8e49fb4565 100644 --- a/Anytype.xcodeproj/project.pbxproj +++ b/Anytype.xcodeproj/project.pbxproj @@ -95,7 +95,6 @@ 1223C9002726BE1C00C34616 /* FeaturedRelationBlockView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1223C8FF2726BE1C00C34616 /* FeaturedRelationBlockView.swift */; }; 1223C9022726BEB000C34616 /* FeaturedRelationsBlockContentConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1223C9012726BEB000C34616 /* FeaturedRelationsBlockContentConfiguration.swift */; }; 1226857928D4C5E60013A28E /* AppMetricsTracker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1226857828D4C5E60013A28E /* AppMetricsTracker.swift */; }; - 122898BD276F112D004B81B8 /* RelationObjectsRowView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 122898BC276F112D004B81B8 /* RelationObjectsRowView.swift */; }; 122FFD43272BA7420069129A /* ObjectHeaderFilledState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 122FFD42272BA7420069129A /* ObjectHeaderFilledState.swift */; }; 123949EE279FD7320080E1CF /* FullScreenHeightPopupLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 123949ED279FD7320080E1CF /* FullScreenHeightPopupLayout.swift */; }; 12394A2A27A405D10080E1CF /* RelationDetailsPopupBehavior.swift in Sources */ = {isa = PBXBuildFile; fileRef = 12394A2927A405D10080E1CF /* RelationDetailsPopupBehavior.swift */; }; @@ -242,8 +241,6 @@ 12C0592E27F3274E004FFAAB /* DownloadableContentProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 12C0592D27F3274E004FFAAB /* DownloadableContentProtocol.swift */; }; 12C2A5802755F0CE00311854 /* DateRelationValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 12C2A57F2755F0CE00311854 /* DateRelationValue.swift */; }; 12C2A5822756342F00311854 /* DateExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 12C2A5812756342F00311854 /* DateExtension.swift */; }; - 12C2A5982757A6D600311854 /* StatusRelationDetailsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 12C2A5972757A6D600311854 /* StatusRelationDetailsView.swift */; }; - 12C2A59D2757A6E000311854 /* StatusRelationDetailsViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 12C2A59C2757A6E000311854 /* StatusRelationDetailsViewModel.swift */; }; 12C6343026600C2600E1DF6F /* TapGestureRecognizerWithClosure.swift in Sources */ = {isa = PBXBuildFile; fileRef = 12C6342F26600C2600E1DF6F /* TapGestureRecognizerWithClosure.swift */; }; 12C8440226FCE92200D64B8D /* ObjectHeaderEmptyConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 12C8440126FCE92200D64B8D /* ObjectHeaderEmptyConfiguration.swift */; }; 12C8440426FCE92D00D64B8D /* ObjectHeaderEmptyContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 12C8440326FCE92D00D64B8D /* ObjectHeaderEmptyContentView.swift */; }; @@ -251,10 +248,6 @@ 12C8440926FCECA300D64B8D /* ObjectHeaderFilledContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 12C8440826FCECA300D64B8D /* ObjectHeaderFilledContentView.swift */; }; 12CAF37026D6A9B0001E56B2 /* ImageStorage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 12CAF36F26D6A9B0001E56B2 /* ImageStorage.swift */; }; 12CAF37226D6A9E3001E56B2 /* ImageStorageProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 12CAF37126D6A9E3001E56B2 /* ImageStorageProtocol.swift */; }; - 12D15D1E27F5F6C000D22086 /* RelationOptionsSearchModuleBuilderProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 12D15D1D27F5F6C000D22086 /* RelationOptionsSearchModuleBuilderProtocol.swift */; }; - 12D15D2027F5F78500D22086 /* TagsOptionsSearchModuleBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 12D15D1F27F5F78500D22086 /* TagsOptionsSearchModuleBuilder.swift */; }; - 12D15D2227F5F81F00D22086 /* ObjectsOptionsSearchModuleBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 12D15D2127F5F81F00D22086 /* ObjectsOptionsSearchModuleBuilder.swift */; }; - 12D15D2427F5F8CD00D22086 /* FilesOptionsSearchModuleBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 12D15D2327F5F8CD00D22086 /* FilesOptionsSearchModuleBuilder.swift */; }; 12D94FD12678CD1F00F794EB /* ObjectBasicIconPicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 12D94FD02678CD1F00F794EB /* ObjectBasicIconPicker.swift */; }; 12DE403A264AD006007B5074 /* ConfigurableView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 12DE4039264AD006007B5074 /* ConfigurableView.swift */; }; 12DE4056264AE455007B5074 /* StackedLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 12DE4046264AE455007B5074 /* StackedLayout.swift */; }; @@ -267,11 +260,8 @@ 12DE4063264AE4C8007B5074 /* UIViewExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 12DE4062264AE4C8007B5074 /* UIViewExtensions.swift */; }; 12E05EEF2796A9C10037B667 /* AnytypePopup.swift in Sources */ = {isa = PBXBuildFile; fileRef = 12E05EEE2796A9C10037B667 /* AnytypePopup.swift */; }; 12E15B89270B2FAE0055EA01 /* BlockActionHandlerProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 12E15B88270B2FAE0055EA01 /* BlockActionHandlerProtocol.swift */; }; - 12EB9AF12771CD6600BA732F /* RelationOptionsListViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 12EB9AF02771CD6600BA732F /* RelationOptionsListViewModel.swift */; }; - 12EB9AF62771F0E900BA732F /* RelationOptionsListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 12EB9AF52771F0E900BA732F /* RelationOptionsListView.swift */; }; 12EB9B2C27743D1700BA732F /* RelationFile.swift in Sources */ = {isa = PBXBuildFile; fileRef = 12EB9B2B27743D1700BA732F /* RelationFile.swift */; }; 12EB9B31277442BC00BA732F /* FileRelationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 12EB9B30277442BC00BA732F /* FileRelationView.swift */; }; - 12EB9B342774437300BA732F /* RelationFilesRowView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 12EB9B332774437300BA732F /* RelationFilesRowView.swift */; }; 12EE02D62840EB5600223EB5 /* DeviceSceneStateListener.swift in Sources */ = {isa = PBXBuildFile; fileRef = 12EE02D52840EB5600223EB5 /* DeviceSceneStateListener.swift */; }; 12EEC36B26A0903F00C3C4B1 /* EmojiData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 12EEC36726A0903F00C3C4B1 /* EmojiData.swift */; }; 12EEC36C26A0903F00C3C4B1 /* EmojiProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 12EEC36826A0903F00C3C4B1 /* EmojiProvider.swift */; }; @@ -1629,7 +1619,6 @@ C9C283822864727C00F035C5 /* GenericCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9C283812864727C00F035C5 /* GenericCollectionViewCell.swift */; }; C9C49A82270499B500D86463 /* CameraPermissionVerifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9C49A81270499B500D86463 /* CameraPermissionVerifier.swift */; }; C9C49A8527049D0200D86463 /* AlertsFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9C49A8427049D0200D86463 /* AlertsFactory.swift */; }; - C9C5368E276A3A07003CD3F3 /* TagRelationRowView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9C5368A276A3A07003CD3F3 /* TagRelationRowView.swift */; }; C9C536A9276C75F4003CD3F3 /* Assets.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9C536A5276C75F4003CD3F3 /* Assets.swift */; }; C9C536AB276C86DD003CD3F3 /* UIColor+Assets.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9C536AA276C86DD003CD3F3 /* UIColor+Assets.swift */; }; C9C536AD276C9040003CD3F3 /* Color+Assets.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9C536AC276C9040003CD3F3 /* Color+Assets.swift */; }; @@ -1877,7 +1866,6 @@ 1223C8FF2726BE1C00C34616 /* FeaturedRelationBlockView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeaturedRelationBlockView.swift; sourceTree = ""; }; 1223C9012726BEB000C34616 /* FeaturedRelationsBlockContentConfiguration.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeaturedRelationsBlockContentConfiguration.swift; sourceTree = ""; }; 1226857828D4C5E60013A28E /* AppMetricsTracker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppMetricsTracker.swift; sourceTree = ""; }; - 122898BC276F112D004B81B8 /* RelationObjectsRowView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RelationObjectsRowView.swift; sourceTree = ""; }; 122FFD42272BA7420069129A /* ObjectHeaderFilledState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ObjectHeaderFilledState.swift; sourceTree = ""; }; 123949ED279FD7320080E1CF /* FullScreenHeightPopupLayout.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FullScreenHeightPopupLayout.swift; sourceTree = ""; }; 12394A2927A405D10080E1CF /* RelationDetailsPopupBehavior.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RelationDetailsPopupBehavior.swift; sourceTree = ""; }; @@ -2020,8 +2008,6 @@ 12C0592D27F3274E004FFAAB /* DownloadableContentProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DownloadableContentProtocol.swift; sourceTree = ""; }; 12C2A57F2755F0CE00311854 /* DateRelationValue.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DateRelationValue.swift; sourceTree = ""; }; 12C2A5812756342F00311854 /* DateExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DateExtension.swift; sourceTree = ""; }; - 12C2A5972757A6D600311854 /* StatusRelationDetailsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatusRelationDetailsView.swift; sourceTree = ""; }; - 12C2A59C2757A6E000311854 /* StatusRelationDetailsViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatusRelationDetailsViewModel.swift; sourceTree = ""; }; 12C6342F26600C2600E1DF6F /* TapGestureRecognizerWithClosure.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TapGestureRecognizerWithClosure.swift; sourceTree = ""; }; 12C8440126FCE92200D64B8D /* ObjectHeaderEmptyConfiguration.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ObjectHeaderEmptyConfiguration.swift; sourceTree = ""; }; 12C8440326FCE92D00D64B8D /* ObjectHeaderEmptyContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ObjectHeaderEmptyContentView.swift; sourceTree = ""; }; @@ -2029,10 +2015,6 @@ 12C8440826FCECA300D64B8D /* ObjectHeaderFilledContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ObjectHeaderFilledContentView.swift; sourceTree = ""; }; 12CAF36F26D6A9B0001E56B2 /* ImageStorage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImageStorage.swift; sourceTree = ""; }; 12CAF37126D6A9E3001E56B2 /* ImageStorageProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImageStorageProtocol.swift; sourceTree = ""; }; - 12D15D1D27F5F6C000D22086 /* RelationOptionsSearchModuleBuilderProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RelationOptionsSearchModuleBuilderProtocol.swift; sourceTree = ""; }; - 12D15D1F27F5F78500D22086 /* TagsOptionsSearchModuleBuilder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TagsOptionsSearchModuleBuilder.swift; sourceTree = ""; }; - 12D15D2127F5F81F00D22086 /* ObjectsOptionsSearchModuleBuilder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ObjectsOptionsSearchModuleBuilder.swift; sourceTree = ""; }; - 12D15D2327F5F8CD00D22086 /* FilesOptionsSearchModuleBuilder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FilesOptionsSearchModuleBuilder.swift; sourceTree = ""; }; 12D94FD02678CD1F00F794EB /* ObjectBasicIconPicker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ObjectBasicIconPicker.swift; sourceTree = ""; }; 12DE4039264AD006007B5074 /* ConfigurableView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConfigurableView.swift; sourceTree = ""; }; 12DE4046264AE455007B5074 /* StackedLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StackedLayout.swift; sourceTree = ""; }; @@ -2045,11 +2027,8 @@ 12DE4062264AE4C8007B5074 /* UIViewExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIViewExtensions.swift; sourceTree = ""; }; 12E05EEE2796A9C10037B667 /* AnytypePopup.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnytypePopup.swift; sourceTree = ""; }; 12E15B88270B2FAE0055EA01 /* BlockActionHandlerProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BlockActionHandlerProtocol.swift; sourceTree = ""; }; - 12EB9AF02771CD6600BA732F /* RelationOptionsListViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RelationOptionsListViewModel.swift; sourceTree = ""; }; - 12EB9AF52771F0E900BA732F /* RelationOptionsListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RelationOptionsListView.swift; sourceTree = ""; }; 12EB9B2B27743D1700BA732F /* RelationFile.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RelationFile.swift; sourceTree = ""; }; 12EB9B30277442BC00BA732F /* FileRelationView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FileRelationView.swift; sourceTree = ""; }; - 12EB9B332774437300BA732F /* RelationFilesRowView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RelationFilesRowView.swift; sourceTree = ""; }; 12EE02D52840EB5600223EB5 /* DeviceSceneStateListener.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DeviceSceneStateListener.swift; sourceTree = ""; }; 12EEC36726A0903F00C3C4B1 /* EmojiData.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EmojiData.swift; sourceTree = ""; }; 12EEC36826A0903F00C3C4B1 /* EmojiProvider.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EmojiProvider.swift; sourceTree = ""; }; @@ -3419,7 +3398,6 @@ C9C283812864727C00F035C5 /* GenericCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GenericCollectionViewCell.swift; sourceTree = ""; }; C9C49A81270499B500D86463 /* CameraPermissionVerifier.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CameraPermissionVerifier.swift; sourceTree = ""; }; C9C49A8427049D0200D86463 /* AlertsFactory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AlertsFactory.swift; sourceTree = ""; }; - C9C5368A276A3A07003CD3F3 /* TagRelationRowView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TagRelationRowView.swift; sourceTree = ""; }; C9C536A5276C75F4003CD3F3 /* Assets.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Assets.swift; sourceTree = ""; }; C9C536AA276C86DD003CD3F3 /* UIColor+Assets.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIColor+Assets.swift"; sourceTree = ""; }; C9C536AC276C9040003CD3F3 /* Color+Assets.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Color+Assets.swift"; sourceTree = ""; }; @@ -4327,14 +4305,6 @@ path = FeaturedRelations; sourceTree = ""; }; - 122898B7276F0E45004B81B8 /* Objects */ = { - isa = PBXGroup; - children = ( - 122898BC276F112D004B81B8 /* RelationObjectsRowView.swift */, - ); - path = Objects; - sourceTree = ""; - }; 123949EB279EEF830080E1CF /* TextRelationDetailsService */ = { isa = PBXGroup; children = ( @@ -4343,16 +4313,6 @@ path = TextRelationDetailsService; sourceTree = ""; }; - 123949F127A00A250080E1CF /* Rows */ = { - isa = PBXGroup; - children = ( - 12461BF32767646D00D47708 /* Tag */, - 122898B7276F0E45004B81B8 /* Objects */, - 12EB9B322774435E00BA732F /* Files */, - ); - path = Rows; - sourceTree = ""; - }; 12394A2727A4023F0080E1CF /* Layout */ = { isa = PBXGroup; children = ( @@ -4432,14 +4392,6 @@ path = StatusSearchViewModel; sourceTree = ""; }; - 12461BF32767646D00D47708 /* Tag */ = { - isa = PBXGroup; - children = ( - C9C5368A276A3A07003CD3F3 /* TagRelationRowView.swift */, - ); - path = Tag; - sourceTree = ""; - }; 12461BFA2767835200D47708 /* Tag */ = { isa = PBXGroup; children = ( @@ -4853,8 +4805,6 @@ 2EE33DC12B55829400D0CDDB /* Date */, 1244793A27DC61FA00581174 /* SearchViewModels */, 12887F3D274BC25100228330 /* LegacyText */, - 12F14CE32758EFE000B976B5 /* LegacyStatus */, - 12EB9B1827735C2900BA732F /* LegacyOptionsList */, ); path = RelationDetailsViews; sourceTree = ""; @@ -5106,17 +5056,6 @@ path = ImageStorage; sourceTree = ""; }; - 12D15D2527F5F91B00D22086 /* RelationOptionsSearchModuleBuilder */ = { - isa = PBXGroup; - children = ( - 12D15D1D27F5F6C000D22086 /* RelationOptionsSearchModuleBuilderProtocol.swift */, - 12D15D1F27F5F78500D22086 /* TagsOptionsSearchModuleBuilder.swift */, - 12D15D2127F5F81F00D22086 /* ObjectsOptionsSearchModuleBuilder.swift */, - 12D15D2327F5F8CD00D22086 /* FilesOptionsSearchModuleBuilder.swift */, - ); - path = RelationOptionsSearchModuleBuilder; - sourceTree = ""; - }; 12DE4038264ACF83007B5074 /* View protocols */ = { isa = PBXGroup; children = ( @@ -5184,25 +5123,6 @@ path = AnytypePopup; sourceTree = ""; }; - 12EB9B1827735C2900BA732F /* LegacyOptionsList */ = { - isa = PBXGroup; - children = ( - 123949F127A00A250080E1CF /* Rows */, - 12EB9AF52771F0E900BA732F /* RelationOptionsListView.swift */, - 12EB9AF02771CD6600BA732F /* RelationOptionsListViewModel.swift */, - 12D15D2527F5F91B00D22086 /* RelationOptionsSearchModuleBuilder */, - ); - path = LegacyOptionsList; - sourceTree = ""; - }; - 12EB9B322774435E00BA732F /* Files */ = { - isa = PBXGroup; - children = ( - 12EB9B332774437300BA732F /* RelationFilesRowView.swift */, - ); - path = Files; - sourceTree = ""; - }; 12EE02D32840EAFF00223EB5 /* SceneDelegates */ = { isa = PBXGroup; children = ( @@ -5220,15 +5140,6 @@ path = DeviceSceneStateListener; sourceTree = ""; }; - 12F14CE32758EFE000B976B5 /* LegacyStatus */ = { - isa = PBXGroup; - children = ( - 12C2A5972757A6D600311854 /* StatusRelationDetailsView.swift */, - 12C2A59C2757A6E000311854 /* StatusRelationDetailsViewModel.swift */, - ); - path = LegacyStatus; - sourceTree = ""; - }; 12FF0D0327C51AD300562DD9 /* TextField */ = { isa = PBXGroup; children = ( @@ -10806,7 +10717,6 @@ 1247BC6827FDC440005F2DB4 /* NewRelationModuleInput.swift in Sources */, 2ACD86F429C309AA0082E861 /* WidgetTypeChangeViewModel.swift in Sources */, 2AFCEB3929C8A25900841E13 /* CollectionsSubscriptionService.swift in Sources */, - C9C5368E276A3A07003CD3F3 /* TagRelationRowView.swift in Sources */, 53728CFB273596750092A8CF /* MarkupKind.swift in Sources */, 3D611E8E2B936B8300B33305 /* MembershipTeirView.swift in Sources */, C97A9A19287300080032DE3E /* SimpleTableMenuView.swift in Sources */, @@ -11057,7 +10967,6 @@ 2EAA14042AA63918000A712A /* SetViewSettingsRelation.swift in Sources */, 860B8F8F2AF8D7EE00000811 /* EditorPageViewModel+ChangeType.swift in Sources */, C9A7528328E3297000235BDE /* SharedContants.swift in Sources */, - 12D15D2027F5F78500D22086 /* TagsOptionsSearchModuleBuilder.swift in Sources */, 2AD741352994F19B004BD223 /* ApplicationStateService.swift in Sources */, 2AAA09052AEAB71900A446B8 /* SpaceSwitchCoordinatorView.swift in Sources */, 2AFD7E1A2B63D536003B16EB /* Weak.swift in Sources */, @@ -11075,7 +10984,6 @@ 12DE405E264AE455007B5074 /* LayoutAnchor.swift in Sources */, 2A35A6AB2BBD6FDF00CCE4F4 /* ShareOptionsDI.swift in Sources */, 53EA4A782637637200968B8E /* StyleColorCellView.swift in Sources */, - 12D15D2227F5F81F00D22086 /* ObjectsOptionsSearchModuleBuilder.swift in Sources */, 2AD5EFC92B1753E400FAA908 /* DocumentUpdateAlertView.swift in Sources */, 2A5025012BBE9BD800A141B8 /* ObjectSearchModuleData.swift in Sources */, 2ECB34312A97D01B00E0F9BB /* SetFiltersSelectionCoordinatorAssembly.swift in Sources */, @@ -11348,7 +11256,6 @@ 2A9C187E2BA18A2400DFE560 /* ObjectPermissions.swift in Sources */, 2AE5C71D29B7299F00A92C12 /* WidgetSourceSearchViewModel.swift in Sources */, EA45749725F8D2EB007D6C83 /* TextBlockContentView.swift in Sources */, - 12EB9AF62771F0E900BA732F /* RelationOptionsListView.swift in Sources */, 3DDD3D0E26AEB55700B5673A /* BlockFileView.swift in Sources */, 2AD5EFC62B17492500FAA908 /* BottomAlertButtonView.swift in Sources */, 53FF7C6D26F8F8E400A5A592 /* iCloudBackupConfigurator.swift in Sources */, @@ -11382,7 +11289,6 @@ 2A1F4CBB29B88DBE004516F6 /* SentryNonFatalLogger.swift in Sources */, 2E0797B82A0964BC006F0FD7 /* JoinFlowModuleAssembly.swift in Sources */, 2A785B452AFCDDB30020297E /* EditorCoordinatorView.swift in Sources */, - 12C2A5982757A6D600311854 /* StatusRelationDetailsView.swift in Sources */, 125683F627E09380003A8251 /* SelectionIndicatorViewModelBuilder.swift in Sources */, 2A668F152BB2BC0200460C68 /* AsyncStandardButtonGroup.swift in Sources */, 2AD7412A2993DB27004BD223 /* BinLinkWidgetModuleAssembly.swift in Sources */, @@ -11524,7 +11430,6 @@ 2A9D299228BCC16E00789AC7 /* NonExistentBlockContentConfiguration.swift in Sources */, 2ECF1DC62BBEE2AC007C68E2 /* GlobalSearchView.swift in Sources */, 3DB3EC69275513B8002781DA /* ProgressBarStub.swift in Sources */, - 12D15D2427F5F8CD00D22086 /* FilesOptionsSearchModuleBuilder.swift in Sources */, EAE6BE252681FC5C00275788 /* LoginStateService.swift in Sources */, 2E63047B28A55D2A00BEF2E9 /* SetCollectionView.swift in Sources */, 2A377E432A82700C00EA856B /* RemoteStorageViewModel.swift in Sources */, @@ -11558,7 +11463,6 @@ 3DE3DE672BBDBC1F00C9E6D3 /* MembershipTierPaymentTypeExtension.swift in Sources */, 125683D527DF17CE003A8251 /* TagSearchRowView.swift in Sources */, 3DCEE135273C18FC00BC5565 /* BeginingOfTextMarkdown.swift in Sources */, - 122898BD276F112D004B81B8 /* RelationObjectsRowView.swift in Sources */, 531F0DE8283C44A2000A0B31 /* CreateObjectViewModel.swift in Sources */, C97B5D6627F49F6100EA7E33 /* CellBlockConfiguration.swift in Sources */, 2E0797B32A0940F8006F0FD7 /* JoinFlowView.swift in Sources */, @@ -11680,7 +11584,6 @@ 2E0797C52A09678C006F0FD7 /* AuthModuleAssembly.swift in Sources */, 2A2B33352A7BE5E0004BD906 /* SpaceWidgetViewModel.swift in Sources */, 3DDD3D1426AED74E00B5673A /* CodeLanguage.swift in Sources */, - 12D15D1E27F5F6C000D22086 /* RelationOptionsSearchModuleBuilderProtocol.swift in Sources */, 3D30418527ECBBDB00FFE0EB /* AnytypeToggle.swift in Sources */, 2AAA09AD2AEBF2D200A446B8 /* BlockContentType+Analytics.swift in Sources */, 2E5E0662298AD693004A98CE /* SetHeaderSettingsViewModel.swift in Sources */, @@ -11808,10 +11711,8 @@ 12FD9D29276717CF00991886 /* RelationTag.swift in Sources */, 53D4088827EC9EFE00495335 /* ObjectPreviewView.swift in Sources */, 2AD276422B6D22BA00112215 /* GallerySpaceSelectionView.swift in Sources */, - 12EB9AF12771CD6600BA732F /* RelationOptionsListViewModel.swift in Sources */, 2E48ACA32A55D4EF0059CB5C /* CustomBackSwipe.swift in Sources */, 2E8387C1291A897700506766 /* BlockDataview+Group.swift in Sources */, - 12C2A59D2757A6E000311854 /* StatusRelationDetailsViewModel.swift in Sources */, C90189A928338D2900F30853 /* TemplatesCoordinator.swift in Sources */, 1240EAF627B13D6B005B501E /* UIDeviceExtension.swift in Sources */, 125B6EC026F235F400BCD7D6 /* CursorModeAccessoryViewItem.swift in Sources */, @@ -11940,7 +11841,6 @@ 867BD96B2B60DF6800BD3AF5 /* MentionObject+Properties.swift in Sources */, 2AFEED182A73AEDB00D7A45B /* HomeCoordinatorViewModel.swift in Sources */, 2AFEED182A73AEDB00D7A45B /* HomeCoordinatorViewModel.swift in Sources */, - 12EB9B342774437300BA732F /* RelationFilesRowView.swift in Sources */, C9A4268728489CAD00F388FC /* SimpleTableBlockViewModel.swift in Sources */, 2AC906C729B601C200209E39 /* FavoriteWidgetInternalViewModel.swift in Sources */, 2E0C65BE2B9798D800D33F5F /* RelationValueProcessingService.swift in Sources */, diff --git a/Anytype/Sources/PresentationLayer/Common/SwiftUI/RelationDetailsViews/LegacyOptionsList/RelationOptionsListView.swift b/Anytype/Sources/PresentationLayer/Common/SwiftUI/RelationDetailsViews/LegacyOptionsList/RelationOptionsListView.swift deleted file mode 100644 index 3ac5048c11..0000000000 --- a/Anytype/Sources/PresentationLayer/Common/SwiftUI/RelationDetailsViews/LegacyOptionsList/RelationOptionsListView.swift +++ /dev/null @@ -1,79 +0,0 @@ -import SwiftUI - -struct RelationOptionsListView: View { - - @ObservedObject var viewModel: RelationOptionsListViewModel - - var body: some View { - NavigationView { - content - .navigationTitle(viewModel.title) - .navigationBarTitleDisplayMode(.inline) - .sheet(isPresented: $viewModel.isSearchPresented) { viewModel.makeSearchView() } - } - .navigationViewStyle(.stack) - } - - private var content: some View { - Group { - if viewModel.selectedOptions.isEmpty { - emptyView - } else { - optionsList - } - } - .toolbar { - ToolbarItem(placement: .navigationBarTrailing) { - addButton - } - } - } - - private var emptyView: some View { - VStack(spacing: 0) { - AnytypeText(viewModel.emptyPlaceholder, style: .uxCalloutRegular, color: .Text.tertiary) - .frame(height: 48) - Spacer() - } - } - - private var optionsList: some View { - List { - ForEach(viewModel.selectedOptions) { - $0.makeView() - } - .onMove { source, destination in - viewModel.move(source: source, destination: destination) - } - .onDelete { - viewModel.delete($0) - } - } - .padding(.bottom, 20) - .listStyle(.plain) - .toolbar { - ToolbarItem(placement: .navigationBarLeading) { - EditButton() - .foregroundColor(Color.Button.active) - .disabled(!viewModel.isEditable) - } - } - } - -} - -// MARK: - NavigationBarView - -private extension RelationOptionsListView { - - var addButton: some View { - Button { - viewModel.didTapAddButton() - } label: { - Image(asset: .X32.plus) - .foregroundColor(.Button.active) - } - .disabled(!viewModel.isEditable) - } - -} diff --git a/Anytype/Sources/PresentationLayer/Common/SwiftUI/RelationDetailsViews/LegacyOptionsList/RelationOptionsListViewModel.swift b/Anytype/Sources/PresentationLayer/Common/SwiftUI/RelationDetailsViews/LegacyOptionsList/RelationOptionsListViewModel.swift deleted file mode 100644 index 14610aafa6..0000000000 --- a/Anytype/Sources/PresentationLayer/Common/SwiftUI/RelationDetailsViews/LegacyOptionsList/RelationOptionsListViewModel.swift +++ /dev/null @@ -1,158 +0,0 @@ -import Foundation -import SwiftUI -import FloatingPanel -import AnytypeCore -import Services - -@MainActor -final class RelationOptionsListViewModel: ObservableObject { - - @Published var selectedOptions: [ListRowConfiguration] = [] - @Published var isSearchPresented: Bool = false - - let isEditable: Bool - let title: String - let emptyPlaceholder: String - - private(set) var popupLayout: AnytypePopupLayoutType = .relationOptions { - didSet { - popup?.updateLayout(true) - } - } - - private weak var popup: AnytypePopupProxy? - - private let details: ObjectDetails - private let relationKey: String - private let searchModuleBuilder: RelationOptionsSearchModuleBuilderProtocol - private let service: RelationsServiceProtocol - private let analyticsType: AnalyticsEventsRelationType - - init( - details: ObjectDetails, - selectedOptions: [ListRowConfiguration], - emptyOptionsPlaceholder: String, - relation: Relation, - searchModuleBuilder: RelationOptionsSearchModuleBuilderProtocol, - service: RelationsServiceProtocol, - analyticsType: AnalyticsEventsRelationType - ) { - self.details = details - self.selectedOptions = selectedOptions - self.title = relation.name - self.emptyPlaceholder = emptyOptionsPlaceholder - self.relationKey = relation.key - self.searchModuleBuilder = searchModuleBuilder - self.service = service - self.analyticsType = analyticsType - self.isEditable = relation.isEditable - - updateLayout() - } - -} - -// MARK: - Internal functions - -extension RelationOptionsListViewModel { - - func delete(_ indexSet: IndexSet) { - selectedOptions.remove(atOffsets: indexSet) - Task { - try await service.updateRelation( - objectId: details.id, - relationKey: relationKey, - value: selectedOptions.map { $0.id }.protobufValue - ) - AnytypeAnalytics.instance().logChangeRelationValue(isEmpty: selectedOptions.isEmpty, type: analyticsType) - updateLayout() - } - } - - func move(source: IndexSet, destination: Int) { - selectedOptions.move(fromOffsets: source, toOffset: destination) - - Task { - try await service.updateRelation( - objectId: details.id, - relationKey: relationKey, - value: selectedOptions.map { $0.id }.protobufValue - ) - AnytypeAnalytics.instance().logChangeRelationValue(isEmpty: selectedOptions.isEmpty, type: analyticsType) - } - } - - func didTapAddButton() { - isSearchPresented = true - } - - func makeSearchView() -> some View { - searchModuleBuilder.buildModule( - spaceId: details.spaceId, - excludedOptionIds: selectedOptionIds - ) { [weak self] ids in - self?.handleNewOptionIds(ids) - } onCreate: { [weak self] title in - self?.handleCreateOption(title: title) - } - } - -} - -// MARK: - Private extension - -private extension RelationOptionsListViewModel { - - func handleNewOptionIds(_ ids: [String]) { - Task { - let newSelectedOptionsIds = selectedOptionIds + ids - try await service.updateRelation( - objectId: details.id, - relationKey: relationKey, - value: newSelectedOptionsIds.protobufValue - ) - isSearchPresented = false - AnytypeAnalytics.instance().logChangeRelationValue(isEmpty: newSelectedOptionsIds.isEmpty, type: analyticsType) - popup?.close() - } - } - - func handleCreateOption(title: String) { - Task { - let optionId = try await service.addRelationOption(spaceId: details.spaceId, relationKey: relationKey, optionText: title, color: nil) - guard let optionId = optionId else { return} - - handleNewOptionIds([optionId]) - } - } - - func updateLayout() { - popupLayout = selectedOptions.isNotEmpty ? .relationOptions : .constantHeight(height: 150, floatingPanelStyle: false) - } - - var selectedOptionIds: [String] { - selectedOptions.map { $0.id } - } - -} - - -// MARK: - AnytypePopupViewModelProtocol - -extension RelationOptionsListViewModel: AnytypePopupViewModelProtocol { - - func makeContentView() -> UIViewController { - UIHostingController( - rootView: - RelationOptionsListView(viewModel: self) - .highPriorityGesture( - DragGesture() - ) - ) - } - - func onPopupInstall(_ popup: AnytypePopupProxy) { - self.popup = popup - } - -} diff --git a/Anytype/Sources/PresentationLayer/Common/SwiftUI/RelationDetailsViews/LegacyOptionsList/RelationOptionsSearchModuleBuilder/FilesOptionsSearchModuleBuilder.swift b/Anytype/Sources/PresentationLayer/Common/SwiftUI/RelationDetailsViews/LegacyOptionsList/RelationOptionsSearchModuleBuilder/FilesOptionsSearchModuleBuilder.swift deleted file mode 100644 index 24afcca9d0..0000000000 --- a/Anytype/Sources/PresentationLayer/Common/SwiftUI/RelationDetailsViews/LegacyOptionsList/RelationOptionsSearchModuleBuilder/FilesOptionsSearchModuleBuilder.swift +++ /dev/null @@ -1,26 +0,0 @@ -import Foundation - -struct FilesOptionsSearchModuleBuilder: RelationOptionsSearchModuleBuilderProtocol { - - private let newSearcModuleAssembly: NewSearchModuleAssemblyProtocol - - init(newSearcModuleAssembly: NewSearchModuleAssemblyProtocol) { - self.newSearcModuleAssembly = newSearcModuleAssembly - } - - // MARK: - RelationOptionsSearchModuleBuilderProtocol - - func buildModule( - spaceId: String, - excludedOptionIds: [String], - onSelect: @escaping ([String]) -> Void, - onCreate _ : @escaping (String) -> Void - ) -> NewSearchView { - newSearcModuleAssembly.filesSearchModule( - spaceId: spaceId, - excludedFileIds: excludedOptionIds, - onSelect: onSelect - ) - } - -} diff --git a/Anytype/Sources/PresentationLayer/Common/SwiftUI/RelationDetailsViews/LegacyOptionsList/RelationOptionsSearchModuleBuilder/ObjectsOptionsSearchModuleBuilder.swift b/Anytype/Sources/PresentationLayer/Common/SwiftUI/RelationDetailsViews/LegacyOptionsList/RelationOptionsSearchModuleBuilder/ObjectsOptionsSearchModuleBuilder.swift deleted file mode 100644 index f9d9684a42..0000000000 --- a/Anytype/Sources/PresentationLayer/Common/SwiftUI/RelationDetailsViews/LegacyOptionsList/RelationOptionsSearchModuleBuilder/ObjectsOptionsSearchModuleBuilder.swift +++ /dev/null @@ -1,29 +0,0 @@ -import Foundation - -class ObjectsOptionsSearchModuleBuilder: RelationOptionsSearchModuleBuilderProtocol { - - let limitedObjectType: [String] - private let newSearcModuleAssembly: NewSearchModuleAssemblyProtocol - - init(limitedObjectType: [String], newSearcModuleAssembly: NewSearchModuleAssemblyProtocol) { - self.limitedObjectType = limitedObjectType - self.newSearcModuleAssembly = newSearcModuleAssembly - } - - // MARK: - RelationOptionsSearchModuleBuilderProtocol - - func buildModule( - spaceId: String, - excludedOptionIds: [String], - onSelect: @escaping ([String]) -> Void, - onCreate _ : @escaping (String) -> Void - ) -> NewSearchView { - newSearcModuleAssembly.objectsSearchModule( - spaceId: spaceId, - excludedObjectIds: excludedOptionIds, - limitedObjectType: limitedObjectType, - onSelect: { details in onSelect(details.map(\.id)) } - ) - } - -} diff --git a/Anytype/Sources/PresentationLayer/Common/SwiftUI/RelationDetailsViews/LegacyOptionsList/RelationOptionsSearchModuleBuilder/RelationOptionsSearchModuleBuilderProtocol.swift b/Anytype/Sources/PresentationLayer/Common/SwiftUI/RelationDetailsViews/LegacyOptionsList/RelationOptionsSearchModuleBuilder/RelationOptionsSearchModuleBuilderProtocol.swift deleted file mode 100644 index bac8407bf7..0000000000 --- a/Anytype/Sources/PresentationLayer/Common/SwiftUI/RelationDetailsViews/LegacyOptionsList/RelationOptionsSearchModuleBuilder/RelationOptionsSearchModuleBuilderProtocol.swift +++ /dev/null @@ -1,13 +0,0 @@ -import Foundation -import SwiftUI - -protocol RelationOptionsSearchModuleBuilderProtocol { - - func buildModule( - spaceId: String, - excludedOptionIds: [String], - onSelect: @escaping (_ ids: [String]) -> Void, - onCreate: @escaping (_ title: String) -> Void - ) -> NewSearchView - -} diff --git a/Anytype/Sources/PresentationLayer/Common/SwiftUI/RelationDetailsViews/LegacyOptionsList/RelationOptionsSearchModuleBuilder/TagsOptionsSearchModuleBuilder.swift b/Anytype/Sources/PresentationLayer/Common/SwiftUI/RelationDetailsViews/LegacyOptionsList/RelationOptionsSearchModuleBuilder/TagsOptionsSearchModuleBuilder.swift deleted file mode 100644 index 1e3f12eb9c..0000000000 --- a/Anytype/Sources/PresentationLayer/Common/SwiftUI/RelationDetailsViews/LegacyOptionsList/RelationOptionsSearchModuleBuilder/TagsOptionsSearchModuleBuilder.swift +++ /dev/null @@ -1,24 +0,0 @@ -import Foundation - -class TagsOptionsSearchModuleBuilder: RelationOptionsSearchModuleBuilderProtocol { - - let relationKey: String - private let newSearcModuleAssembly: NewSearchModuleAssemblyProtocol - - init(relationKey: String, newSearcModuleAssembly: NewSearchModuleAssemblyProtocol) { - self.relationKey = relationKey - self.newSearcModuleAssembly = newSearcModuleAssembly - } - - // MARK: - RelationOptionsSearchModuleBuilderProtocol - - func buildModule( - spaceId: String, - excludedOptionIds: [String], - onSelect: @escaping ([String]) -> Void, - onCreate: @escaping (String) -> Void - ) -> NewSearchView { - newSearcModuleAssembly.tagsSearchModule(spaceId: spaceId, relationKey: relationKey, selectedTagIds: excludedOptionIds, onSelect: onSelect, onCreate: onCreate) - } - -} diff --git a/Anytype/Sources/PresentationLayer/Common/SwiftUI/RelationDetailsViews/LegacyOptionsList/Rows/Files/RelationFilesRowView.swift b/Anytype/Sources/PresentationLayer/Common/SwiftUI/RelationDetailsViews/LegacyOptionsList/Rows/Files/RelationFilesRowView.swift deleted file mode 100644 index 72ae02969c..0000000000 --- a/Anytype/Sources/PresentationLayer/Common/SwiftUI/RelationDetailsViews/LegacyOptionsList/Rows/Files/RelationFilesRowView.swift +++ /dev/null @@ -1,38 +0,0 @@ -import SwiftUI - -struct RelationFilesRowView: View { - - let file: Relation.File.Option - let action: (() -> Void) - - var body: some View { - HStack(alignment: .center, spacing: 9) { - if let icon = file.icon { - IconView(icon: icon) - .frame(width: 48, height: 48) - } - - AnytypeText(file.title, style: .previewTitle2Medium, color: .Text.primary) - .lineLimit(1) - } - .frame(height: 48) - .onTapGesture { - action() - } - } - -} - -struct RelationFilesRowView_Previews: PreviewProvider { - static var previews: some View { - RelationFilesRowView( - file: Relation.File.Option( - id: "s", - icon: .object(.todo(false)), - title: "title", - editorScreenData: .favorites - ), - action: {} - ) - } -} diff --git a/Anytype/Sources/PresentationLayer/Common/SwiftUI/RelationDetailsViews/LegacyOptionsList/Rows/Objects/RelationObjectsRowView.swift b/Anytype/Sources/PresentationLayer/Common/SwiftUI/RelationDetailsViews/LegacyOptionsList/Rows/Objects/RelationObjectsRowView.swift deleted file mode 100644 index 0b560c82f7..0000000000 --- a/Anytype/Sources/PresentationLayer/Common/SwiftUI/RelationDetailsViews/LegacyOptionsList/Rows/Objects/RelationObjectsRowView.swift +++ /dev/null @@ -1,89 +0,0 @@ -import SwiftUI -import AnytypeCore - -struct RelationObjectsRowView: View { - - let object: Relation.Object.Option - let action: (() -> Void) - - var body: some View { - HStack(alignment: .center, spacing: 0) { - icon - text - Spacer() - } - .frame(height: 68) - .onTapGesture { - action() - } - } - - @ViewBuilder - private var icon: some View { - if object.isDeleted { - Group { - Image(asset: .ghost).resizable().frame(width: 28, height: 28) - }.frame(width: 48, height: 48) - Spacer.fixedWidth(12) - } - else if let icon = object.icon { - IconView(icon: icon) - .frame(width: 48, height: 48) - Spacer.fixedWidth(12) - } - } - - private var text: some View { - VStack(alignment: .leading, spacing: 0) { - AnytypeText( - object.isDeleted ? Loc.nonExistentObject : object.title, - style: .previewTitle2Medium, - color: titleColor - ) - .lineLimit(1) - - Spacer.fixedHeight(1) - - AnytypeText( - object.isDeleted ? Loc.deleted : object.type, - style: .relation2Regular, - color: subtitleColor - ) - .lineLimit(1) - } - } - - private var titleColor: Color { - if object.isDeleted || object.isArchived { - return .Text.tertiary - } else { - return .Text.primary - } - } - - private var subtitleColor: Color { - if object.isDeleted || object.isArchived { - return .Text.tertiary - } else { - return .Text.secondary - } - } - -} - -struct RelationObjectsRowView_Previews: PreviewProvider { - static var previews: some View { - RelationObjectsRowView( - object: Relation.Object.Option( - id: "", - icon: .object(.placeholder("r")), - title: "title", - type: "type", - isArchived: false, - isDeleted: false, - editorScreenData: .favorites - ), - action: {} - ) - } -} diff --git a/Anytype/Sources/PresentationLayer/Common/SwiftUI/RelationDetailsViews/LegacyOptionsList/Rows/Tag/TagRelationRowView.swift b/Anytype/Sources/PresentationLayer/Common/SwiftUI/RelationDetailsViews/LegacyOptionsList/Rows/Tag/TagRelationRowView.swift deleted file mode 100644 index 685b6c827d..0000000000 --- a/Anytype/Sources/PresentationLayer/Common/SwiftUI/RelationDetailsViews/LegacyOptionsList/Rows/Tag/TagRelationRowView.swift +++ /dev/null @@ -1,20 +0,0 @@ -import SwiftUI - -struct TagRelationRowView: View { - - let config: TagView.Config - - var body: some View { - HStack(spacing: 0) { - TagView(config: config) - Spacer() - } - .frame(height: 48) - } -} - -#Preview { - TagRelationRowView( - config: TagView.Config.default - ) -} diff --git a/Anytype/Sources/PresentationLayer/Common/SwiftUI/RelationDetailsViews/LegacyStatus/StatusRelationDetailsView.swift b/Anytype/Sources/PresentationLayer/Common/SwiftUI/RelationDetailsViews/LegacyStatus/StatusRelationDetailsView.swift deleted file mode 100644 index b30653d5d9..0000000000 --- a/Anytype/Sources/PresentationLayer/Common/SwiftUI/RelationDetailsViews/LegacyStatus/StatusRelationDetailsView.swift +++ /dev/null @@ -1,72 +0,0 @@ -import SwiftUI - -struct StatusRelationDetailsView: View { - - @ObservedObject var viewModel: StatusRelationDetailsViewModel - - var body: some View { - VStack(spacing: 0) { - InlineNavigationBar { - TitleView(title: viewModel.title) - } rightButton: { - rightButton - } - content - Spacer() - } - .sheet(isPresented: $viewModel.isSearchPresented) { viewModel.makeSearchView() } - } - - private var rightButton: some View { - Group { - if viewModel.currentStatusModel.isNil { - addButton - } else { - clearButton - } - } - } - - private var content: some View { - Group { - if let currentStatusModel = viewModel.currentStatusModel { - Button { - viewModel.didTapAddButton() - } label: { - StatusSearchRowView(viewModel: currentStatusModel, selectionIndicatorViewModel: nil) - } - } else { - AnytypeText(Loc.noRelatedOptionsHere, style: .uxCalloutRegular, color: .Text.tertiary) - .frame(height: 48) - } - } - } - -} - -// MARK: - NavigationBarView - -private extension StatusRelationDetailsView { - - var clearButton: some View { - Button { - withAnimation(.fastSpring) { - viewModel.didTapClearButton() - } - } label: { - AnytypeText(Loc.clear, style: .uxBodyRegular, color: .Button.active) - } - .disabled(!viewModel.isEditable) - } - - var addButton: some View { - Button { - viewModel.didTapAddButton() - } label: { - Image(asset: .X32.plus) - .foregroundColor(.Button.active) - } - .disabled(!viewModel.isEditable) - } - -} diff --git a/Anytype/Sources/PresentationLayer/Common/SwiftUI/RelationDetailsViews/LegacyStatus/StatusRelationDetailsViewModel.swift b/Anytype/Sources/PresentationLayer/Common/SwiftUI/RelationDetailsViews/LegacyStatus/StatusRelationDetailsViewModel.swift deleted file mode 100644 index 962a4bafbf..0000000000 --- a/Anytype/Sources/PresentationLayer/Common/SwiftUI/RelationDetailsViews/LegacyStatus/StatusRelationDetailsViewModel.swift +++ /dev/null @@ -1,146 +0,0 @@ -import Foundation -import SwiftUI -import Services -import FloatingPanel - -@MainActor -final class StatusRelationDetailsViewModel: ObservableObject { - - @Published private(set) var currentStatusModel: StatusSearchRowView.Model? - @Published var isSearchPresented: Bool = false - var title: String { relation.name } - - let popupLayout = AnytypePopupLayoutType.constantHeight(height: 116, floatingPanelStyle: false) - - private var selectedStatus: Relation.Status.Option? { - didSet { - updateSelectedStatusViewModel() - } - } - var isEditable: Bool { - return relation.isEditable - } - private let details: ObjectDetails - private let relation: Relation - private let service: RelationsServiceProtocol - private let searchService: SearchServiceProtocol - private let newSearchModuleAssembly: NewSearchModuleAssemblyProtocol - private let analyticsType: AnalyticsEventsRelationType - private weak var popup: AnytypePopupProxy? - - init( - details: ObjectDetails, - selectedStatus: Relation.Status.Option?, - relation: Relation, - service: RelationsServiceProtocol, - newSearchModuleAssembly: NewSearchModuleAssemblyProtocol, - searchService: SearchServiceProtocol, - analyticsType: AnalyticsEventsRelationType - ) { - self.details = details - self.selectedStatus = selectedStatus - - self.relation = relation - self.service = service - self.searchService = searchService - self.newSearchModuleAssembly = newSearchModuleAssembly - self.analyticsType = analyticsType - - updateSelectedStatusViewModel() - } - -} - -extension StatusRelationDetailsViewModel { - - func didTapAddButton() { - isSearchPresented = true - } - - func didTapClearButton() { - Task { - selectedStatus = nil - try await service.updateRelation(objectId: details.id, relationKey: relation.key, value: nil) - logChanges() - } - } - - @ViewBuilder - func makeSearchView() -> some View { - newSearchModuleAssembly.statusSearchModule( - spaceId: details.spaceId, - relationKey: relation.key, - selectedStatusesIds: selectedStatus.flatMap { [$0.id] } ?? [] - ) { [weak self] ids in - Task { @MainActor [weak self] in - try? await self?.handleSelectedOptionIds(ids) - } - } onCreate: { [weak self] title in - self?.handleCreateOption(title: title) - } - } - -} - -private extension StatusRelationDetailsViewModel { - - func updateSelectedStatusViewModel() { - currentStatusModel = selectedStatus.flatMap { - StatusSearchRowView.Model(text: $0.text, color: $0.color) - } - } - - func handleSelectedOptionIds(_ ids: [String]) async throws { - defer { - isSearchPresented = false - } - - guard let newStatusId = ids.first else { return } - - Task { - try await service.updateRelation(objectId: details.id, relationKey: relation.key, value: newStatusId.protobufValue) - - let newStatus = try await searchService.searchRelationOptions(optionIds: [newStatusId], spaceId: details.spaceId).first - .map { Relation.Status.Option(option: $0) } - - guard let newStatus = newStatus else { - popup?.close() - return - } - - selectedStatus = newStatus - logChanges() - } - } - - func handleCreateOption(title: String) { - Task { - let optionId = try await service.addRelationOption(spaceId: details.spaceId, relationKey: relation.key, optionText: title, color: nil) - guard let optionId = optionId else { return } - - try? await handleSelectedOptionIds([optionId]) - } - } - - func logChanges() { - AnytypeAnalytics.instance().logChangeRelationValue(isEmpty: selectedStatus.isNil, type: analyticsType) - } -} - -extension StatusRelationDetailsViewModel: AnytypePopupViewModelProtocol { - - func makeContentView() -> UIViewController { - UIHostingController( - rootView: - StatusRelationDetailsView(viewModel: self) - .highPriorityGesture( - DragGesture() - ) - ) - } - - func onPopupInstall(_ popup: AnytypePopupProxy) { - self.popup = popup - } - -} diff --git a/Anytype/Sources/PresentationLayer/RelationValueFlow/RelationEditingViewModelBuilder/RelationEditingViewModelBuilder.swift b/Anytype/Sources/PresentationLayer/RelationValueFlow/RelationEditingViewModelBuilder/RelationEditingViewModelBuilder.swift index 238ae78564..56c39d76aa 100644 --- a/Anytype/Sources/PresentationLayer/RelationValueFlow/RelationEditingViewModelBuilder/RelationEditingViewModelBuilder.swift +++ b/Anytype/Sources/PresentationLayer/RelationValueFlow/RelationEditingViewModelBuilder/RelationEditingViewModelBuilder.swift @@ -133,105 +133,9 @@ extension RelationEditingViewModelBuilder: RelationEditingViewModelBuilderProtoc analyticsType: analyticsType, actionsViewModel: actions.compactMap { $0 } ) - case .status(let status): - return StatusRelationDetailsViewModel( - details: objectDetails, - selectedStatus: status.values.first, - relation: relation, - service: relationsService, - newSearchModuleAssembly: newSearchModuleAssembly, - searchService: searchService, - analyticsType: analyticsType - ) - case .tag(let tag): - let style = RelationStyle.regular(allowMultiLine: false) - return RelationOptionsListViewModel( - details: objectDetails, - selectedOptions: tag.selectedTags.map { tag in - ListRowConfiguration( - id: tag.id, - contentHash: tag.hashValue - ) { - TagRelationRowView( - config: TagView.Config( - text: tag.text, - textColor: tag.textColor, - backgroundColor: tag.backgroundColor, - textFont: style.font, - guidlines: style.tagViewGuidlines - ) - ) - .eraseToAnyView() - } - }, - emptyOptionsPlaceholder: Constants.tagsOrFilesOptionsPlaceholder, - relation: relation, - searchModuleBuilder: TagsOptionsSearchModuleBuilder( - relationKey: relation.key, - newSearcModuleAssembly: newSearchModuleAssembly - ), - service: relationsService, - analyticsType: analyticsType - ) - case .object(let object): - return RelationOptionsListViewModel( - details: objectDetails, - selectedOptions: object.selectedObjects.map { object in - ListRowConfiguration( - id: object.id, - contentHash: object.hashValue - ) { - RelationObjectsRowView( - object: object, - action: { - if let editorScreenData = object.editorScreenData { - onTap(editorScreenData) - } - } - ).eraseToAnyView() - } - }, - emptyOptionsPlaceholder: Constants.objectsOptionsPlaceholder, - relation: relation, - searchModuleBuilder: ObjectsOptionsSearchModuleBuilder( - limitedObjectType: object.limitedObjectTypes, - newSearcModuleAssembly: newSearchModuleAssembly - ), - service: relationsService, - analyticsType: analyticsType - ) - case .file(let file): - return RelationOptionsListViewModel( - details: objectDetails, - selectedOptions: file.files.map { file in - ListRowConfiguration( - id: file.id, - contentHash: file.hashValue - ) { - RelationFilesRowView( - file: file, - action: { onTap(file.editorScreenData) } - ).eraseToAnyView() - } - }, - emptyOptionsPlaceholder: Constants.tagsOrFilesOptionsPlaceholder, - relation: relation, - searchModuleBuilder: FilesOptionsSearchModuleBuilder(newSearcModuleAssembly: newSearchModuleAssembly), - service: relationsService, - analyticsType: analyticsType - ) default: return nil } } } - -private extension RelationEditingViewModelBuilder { - - enum Constants { - static let objectsOptionsPlaceholder = Loc.empty - static let tagsOrFilesOptionsPlaceholder = Loc.noRelatedOptionsHere - } - -} diff --git a/Anytype/Sources/PresentationLayer/RelationValueFlow/RelationValueCoordinator/RelationValueCoordinatorViewModel.swift b/Anytype/Sources/PresentationLayer/RelationValueFlow/RelationValueCoordinator/RelationValueCoordinatorViewModel.swift index e88c6c82ec..70ecdfe40b 100644 --- a/Anytype/Sources/PresentationLayer/RelationValueFlow/RelationValueCoordinator/RelationValueCoordinatorViewModel.swift +++ b/Anytype/Sources/PresentationLayer/RelationValueFlow/RelationValueCoordinator/RelationValueCoordinatorViewModel.swift @@ -58,7 +58,7 @@ final class RelationValueCoordinatorViewModel: ).eraseToAnyView() } - if FeatureFlags.newSelectRelationView, case .status(let status) = relation { + if case .status(let status) = relation { let configuration = RelationModuleConfiguration( title: status.name, isEditable: relation.isEditable, @@ -82,7 +82,7 @@ final class RelationValueCoordinatorViewModel: ).eraseToAnyView() } - if FeatureFlags.newMultiSelectRelationView, case .tag(let tag) = relation { + if case .tag(let tag) = relation { let configuration = RelationModuleConfiguration( title: tag.name, isEditable: relation.isEditable, @@ -106,7 +106,7 @@ final class RelationValueCoordinatorViewModel: ).eraseToAnyView() } - if FeatureFlags.newObjectSelectRelationView, case .object(let object) = relation { + if case .object(let object) = relation { let configuration = RelationModuleConfiguration( title: object.name, isEditable: relation.isEditable, @@ -133,7 +133,7 @@ final class RelationValueCoordinatorViewModel: ).eraseToAnyView() } - if FeatureFlags.newObjectSelectRelationView, case .file(let file) = relation { + if case .file(let file) = relation { let configuration = RelationModuleConfiguration( title: file.name, isEditable: relation.isEditable, diff --git a/Anytype/Sources/PresentationLayer/RelationValueFlow/RelationValueCoordinator/RelationValueProcessingService.swift b/Anytype/Sources/PresentationLayer/RelationValueFlow/RelationValueCoordinator/RelationValueProcessingService.swift index 4d99e10401..d4814d2968 100644 --- a/Anytype/Sources/PresentationLayer/RelationValueFlow/RelationValueCoordinator/RelationValueProcessingService.swift +++ b/Anytype/Sources/PresentationLayer/RelationValueFlow/RelationValueCoordinator/RelationValueProcessingService.swift @@ -26,19 +26,19 @@ fileprivate final class RelationValueProcessingService: RelationValueProcessingS return true } - if FeatureFlags.newSelectRelationView, case .status = relation { + if case .status = relation { return true } - if FeatureFlags.newMultiSelectRelationView, case .tag = relation { + if case .tag = relation { return true } - if FeatureFlags.newObjectSelectRelationView, case .object = relation { + if case .object = relation { return true } - if FeatureFlags.newFileSelectRelationView, case .file = relation { + if case .file = relation { return true } diff --git a/Modules/AnytypeCore/AnytypeCore/Generated/FeatureFlags+Flags.swift b/Modules/AnytypeCore/AnytypeCore/Generated/FeatureFlags+Flags.swift index 44482cac1f..03917f53db 100644 --- a/Modules/AnytypeCore/AnytypeCore/Generated/FeatureFlags+Flags.swift +++ b/Modules/AnytypeCore/AnytypeCore/Generated/FeatureFlags+Flags.swift @@ -26,22 +26,6 @@ public extension FeatureFlags { value(for: .newTypePicker) } - static var newSelectRelationView: Bool { - value(for: .newSelectRelationView) - } - - static var newMultiSelectRelationView: Bool { - value(for: .newMultiSelectRelationView) - } - - static var newObjectSelectRelationView: Bool { - value(for: .newObjectSelectRelationView) - } - - static var newFileSelectRelationView: Bool { - value(for: .newFileSelectRelationView) - } - static var newTextEditingRelationView: Bool { value(for: .newTextEditingRelationView) } @@ -105,10 +89,6 @@ public extension FeatureFlags { .dndOnCollectionsAndSets, .galleryInstallation, .newTypePicker, - .newSelectRelationView, - .newMultiSelectRelationView, - .newObjectSelectRelationView, - .newFileSelectRelationView, .newTextEditingRelationView, .multiplayer, .membership, diff --git a/Modules/AnytypeCore/AnytypeCore/Utils/FeatureFlags/FeatureDescription+Flags.swift b/Modules/AnytypeCore/AnytypeCore/Utils/FeatureFlags/FeatureDescription+Flags.swift index 0fd906992b..92947a63f4 100644 --- a/Modules/AnytypeCore/AnytypeCore/Utils/FeatureFlags/FeatureDescription+Flags.swift +++ b/Modules/AnytypeCore/AnytypeCore/Utils/FeatureFlags/FeatureDescription+Flags.swift @@ -36,30 +36,6 @@ public extension FeatureDescription { defaultValue: true ) - static let newSelectRelationView = FeatureDescription( - title: "New Select relation editing view - 2101", - type: .feature(author: "joe_pusya@anytype.io", releaseVersion: "0.28.0"), - defaultValue: true - ) - - static let newMultiSelectRelationView = FeatureDescription( - title: "New Multi Select relation editing view - 2213", - type: .feature(author: "joe_pusya@anytype.io", releaseVersion: "0.28.0"), - defaultValue: true - ) - - static let newObjectSelectRelationView = FeatureDescription( - title: "New object relation editing view - 2214", - type: .feature(author: "joe_pusya@anytype.io", releaseVersion: "0.28.0"), - defaultValue: true - ) - - static let newFileSelectRelationView = FeatureDescription( - title: "New file relation editing view - 2259", - type: .feature(author: "joe_pusya@anytype.io", releaseVersion: "0.28.0"), - defaultValue: true - ) - static let newTextEditingRelationView = FeatureDescription( title: "New text relation editing view - 2438", type: .feature(author: "joe_pusya@anytype.io", releaseVersion: "0.29.0"), @@ -80,7 +56,7 @@ public extension FeatureDescription { static let newGlobalSearch = FeatureDescription( title: "New global search", - type: .feature(author: "joe_pusya@anytype.io", releaseVersion: "0.30.0"), + type: .feature(author: "joe_pusya@anytype.io", releaseVersion: "5"), defaultValue: false )