Skip to content

Commit

Permalink
Merge pull request #1789 from anyproto/ios-3147-add-link-to
Browse files Browse the repository at this point in the history
IOS-3147 Discussions | Add open screen for link to action (without action implementation)
  • Loading branch information
mgolovko authored Jul 16, 2024
2 parents bc998d8 + d6a74f7 commit f091143
Show file tree
Hide file tree
Showing 10 changed files with 95 additions and 13 deletions.
12 changes: 12 additions & 0 deletions Anytype.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -336,6 +336,9 @@
2A1F94932979579B00E25782 /* CommonWidgetModuleOutput.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A1F94922979579B00E25782 /* CommonWidgetModuleOutput.swift */; };
2A1F949929795FEB00E25782 /* FavoriteSubscriptionService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A1F949829795FEB00E25782 /* FavoriteSubscriptionService.swift */; };
2A20B9192AFBC26C001D0014 /* AnytypeRelativeDateTimeFormatterTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A20B9182AFBC26C001D0014 /* AnytypeRelativeDateTimeFormatterTests.swift */; };
2A21A4002C45798F006D320E /* DiscussionCoordinatorViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A21A3FF2C45798F006D320E /* DiscussionCoordinatorViewModel.swift */; };
2A21A4022C457B89006D320E /* DiscussionModuleOutput.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A21A4012C457B89006D320E /* DiscussionModuleOutput.swift */; };
2A21A4042C457BDB006D320E /* DiscussionViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A21A4032C457BDB006D320E /* DiscussionViewModel.swift */; };
2A25D15D29F2ED5000AB5D9E /* StandardPlainButtonStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A25D15C29F2ED5000AB5D9E /* StandardPlainButtonStyle.swift */; };
2A26982A2B3C2E4000A9C08D /* NodeUsageInfo+Placeholder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A2698292B3C2E4000A9C08D /* NodeUsageInfo+Placeholder.swift */; };
2A27F9B82B8DDB1F00BA1303 /* AsyncThrowsTask.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A27F9B72B8DDB1F00BA1303 /* AsyncThrowsTask.swift */; };
Expand Down Expand Up @@ -2150,6 +2153,9 @@
2A1F949829795FEB00E25782 /* FavoriteSubscriptionService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FavoriteSubscriptionService.swift; sourceTree = "<group>"; };
2A20B9182AFBC26C001D0014 /* AnytypeRelativeDateTimeFormatterTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = AnytypeRelativeDateTimeFormatterTests.swift; path = AnyTypeTests/Formatters/AnytypeRelativeDateTimeFormatterTests.swift; sourceTree = SOURCE_ROOT; };
2A20B91A2AFBCBB3001D0014 /* AnytypeTests.xctestplan */ = {isa = PBXFileReference; lastKnownFileType = text; path = AnytypeTests.xctestplan; sourceTree = "<group>"; };
2A21A3FF2C45798F006D320E /* DiscussionCoordinatorViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DiscussionCoordinatorViewModel.swift; sourceTree = "<group>"; };
2A21A4012C457B89006D320E /* DiscussionModuleOutput.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DiscussionModuleOutput.swift; sourceTree = "<group>"; };
2A21A4032C457BDB006D320E /* DiscussionViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DiscussionViewModel.swift; sourceTree = "<group>"; };
2A25D15C29F2ED5000AB5D9E /* StandardPlainButtonStyle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StandardPlainButtonStyle.swift; sourceTree = "<group>"; };
2A2698292B3C2E4000A9C08D /* NodeUsageInfo+Placeholder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NodeUsageInfo+Placeholder.swift"; sourceTree = "<group>"; };
2A27F9B72B8DDB1F00BA1303 /* AsyncThrowsTask.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AsyncThrowsTask.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -5701,6 +5707,8 @@
2ABC49E32C3EE81B00227F09 /* Container */,
2A4191E42C36924E00117FB8 /* Input */,
2A4191DF2C368FB700117FB8 /* DiscussionView.swift */,
2A21A4012C457B89006D320E /* DiscussionModuleOutput.swift */,
2A21A4032C457BDB006D320E /* DiscussionViewModel.swift */,
);
path = Discussion;
sourceTree = "<group>";
Expand All @@ -5709,6 +5717,7 @@
isa = PBXGroup;
children = (
2A4191E22C368FD800117FB8 /* DiscussionCoordinatorView.swift */,
2A21A3FF2C45798F006D320E /* DiscussionCoordinatorViewModel.swift */,
);
path = DiscussionCoordinator;
sourceTree = "<group>";
Expand Down Expand Up @@ -11250,6 +11259,7 @@
2ABBAEDD2BF4EEBC00EBA8FA /* WidgetObjectListFilesView.swift in Sources */,
2ABF214929B2052900E872D9 /* DashboardClearCacheAlertModel.swift in Sources */,
3D1CEC2227F38871000D36BA /* DashboardAccountDeletionAlert.swift in Sources */,
2A21A4022C457B89006D320E /* DiscussionModuleOutput.swift in Sources */,
2A28D03D297E8C4C00E55E15 /* SetsSubscriptionService.swift in Sources */,
3DE5121626728C0F00153962 /* BaseDocumentProtocol.swift in Sources */,
2ABBAEF32BFB8FCF00EBA8FA /* CollectionsCommonListWidgetSubmoduleView.swift in Sources */,
Expand Down Expand Up @@ -11555,6 +11565,7 @@
2ACDC9C82B5676820063BFBD /* ShareSelectionRow.swift in Sources */,
2EC669212A166FD1001F71BC /* JoinFlowStepOutput.swift in Sources */,
0AD7695925D5908E00669F8C /* FileActionsService.swift in Sources */,
2A21A4002C45798F006D320E /* DiscussionCoordinatorViewModel.swift in Sources */,
125B6EC226F235F400BCD7D6 /* CursorModeAccessoryViewDelegate.swift in Sources */,
2ABBAEED2BFB893600EBA8FA /* FavoriteTreeWidgetsubmoduleView.swift in Sources */,
2AA4C26F2A70287100C2EC66 /* WorkspacesSubscriptionBuilder.swift in Sources */,
Expand Down Expand Up @@ -12587,6 +12598,7 @@
868572512AE6A4CD00F0A747 /* SpaceSearchViewModel.swift in Sources */,
3DD5A5FB2BE4EC0B00F1EE69 /* MembershipOwnerInfoSheetViewModel.swift in Sources */,
2AAEAB5F2BD93CF200E88767 /* ForceDeleteAlertModel.swift in Sources */,
2A21A4042C457BDB006D320E /* DiscussionViewModel.swift in Sources */,
12928C8C27BD3C0B00CE94C3 /* IntrinsicPopupLayout.swift in Sources */,
538F1728272C126F009528E7 /* SearchViewModelProtocol.swift in Sources */,
2E2D256428880C8D00E3DFD1 /* SetFiltersSelectionHeaderViewModel.swift in Sources */,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,21 @@
import SwiftUI

struct DiscussionCoordinatorView: View {

@StateObject private var model: DiscussionCoordinatorViewModel

init(data: EditorDiscussionObject) {
self._model = StateObject(wrappedValue: DiscussionCoordinatorViewModel(data: data))
}

var body: some View {
DiscussionView()
DiscussionView(spaceId: model.spaceId, output: model)
.sheet(item: $model.objectToMessageSearchData) {
BlockObjectSearchView(data: $0)
}
}
}

#Preview {
DiscussionCoordinatorView()
DiscussionCoordinatorView(data: EditorDiscussionObject(spaceId: ""))
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import Foundation

final class DiscussionCoordinatorViewModel: ObservableObject, DiscussionModuleOutput {

let spaceId: String
@Published var objectToMessageSearchData: BlockObjectSearchData?

init(data: EditorDiscussionObject) {
self.spaceId = data.spaceId
}

func onLinkObjectSelected(data: BlockObjectSearchData) {
objectToMessageSearchData = data
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,8 @@ struct EditorCoordinatorView: View {
EditorPageCoordinatorView(data: data, showHeader: true, setupEditorInput: { _, _ in })
case .set(let data):
EditorSetCoordinatorView(data: data)
case .discussion:
DiscussionCoordinatorView()
case .discussion(let data):
DiscussionCoordinatorView(data: data)
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import Foundation

protocol DiscussionModuleOutput: AnyObject {
func onLinkObjectSelected(data: BlockObjectSearchData)
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,12 @@ import SwiftUI

struct DiscussionView: View {

@StateObject private var model: DiscussionViewModel

init(spaceId: String, output: DiscussionModuleOutput?) {
self._model = StateObject(wrappedValue: DiscussionViewModel(spaceId: spaceId, output: output))
}

var body: some View {
DiscussionSpacingContainer {
ScrollView {
Expand All @@ -27,7 +33,9 @@ struct DiscussionView: View {
}
}
.safeAreaInset(edge: .bottom, spacing: 0) {
DiscusionInput()
DiscusionInput {
model.onTapAddObjectToMessage()
}
}
}
}
Expand All @@ -42,5 +50,5 @@ struct DiscussionView: View {
}

#Preview {
DiscussionView()
DiscussionView(spaceId: "", output: nil)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
import Foundation

@MainActor
final class DiscussionViewModel: ObservableObject {

private let spaceId: String
private weak var output: DiscussionModuleOutput?

init(spaceId: String, output: DiscussionModuleOutput?) {
self.spaceId = spaceId
self.output = output
}

func onTapAddObjectToMessage() {
let data = BlockObjectSearchData(
title: Loc.linkTo,
spaceId: spaceId,
excludedObjectIds: [],
excludedLayouts: [],
onSelect: { details in
// TODO: Handle Selected object
}
)
output?.onLinkObjectSelected(data: data)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,15 @@ import SwiftUI
struct DiscusionInput: View {

@State private var editing: Bool = false
let onTapAddObject: () -> Void

var body: some View {
HStack {
Image(asset: .X32.plus)
.onTapGesture {
editing = false
}
Button {
onTapAddObject()
} label: {
Image(asset: .X32.plus)
}
DiscussionTextView(editing: $editing, minHeight: 56, maxHeight: 212)
}
.overlay(alignment: .top) {
Expand All @@ -20,5 +22,5 @@ struct DiscusionInput: View {
}

#Preview {
DiscusionInput()
DiscusionInput(onTapAddObject: {})
}
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ final class HomeWidgetsViewModel: ObservableObject {
}

func onTapDiscussion() {
output?.onObjectSelected(screenData: .discussion)
output?.onObjectSelected(screenData: .discussion(EditorDiscussionObject(spaceId: spaceId)))
}

// MARK: - Private
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ enum EditorScreenData: Hashable, Codable {
case bin
case page(EditorPageObject)
case set(EditorSetObject)
case discussion
case discussion(EditorDiscussionObject)
}

struct EditorPageObject: Hashable, Codable {
Expand Down Expand Up @@ -54,6 +54,10 @@ struct EditorSetObject: Hashable, Codable {
}
}

struct EditorDiscussionObject: Hashable, Codable {
let spaceId: String
}

struct EditorInlineSetObject: Hashable, Codable {
let blockId: String
let targetObjectID: String
Expand Down

0 comments on commit f091143

Please sign in to comment.