damus

nostr ios client
git clone git://jb55.com/damus
Log | Files | Refs | LICENSE

commit 3d1c011e73569722d911f11d14588c75ba1e225b
parent b34d3956b513e28ab714a7a6aba646ef6d7519fa
Author: William Casarin <jb55@jb55.com>
Date:   Thu, 19 May 2022 08:33:37 -0700

extract MainTabView

Start to clean ContentView up a bit.

We need it to be cleaner before we introduce the SetupView

Signed-off-by: William Casarin <jb55@jb55.com>

Diffstat:
Mdamus.xcodeproj/project.pbxproj | 8++++++++
Mdamus/ContentView.swift | 39++-------------------------------------
Adamus/Views/MainTabView.swift | 81+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Adamus/Views/SetupView.swift | 20++++++++++++++++++++
4 files changed, 111 insertions(+), 37 deletions(-)

diff --git a/damus.xcodeproj/project.pbxproj b/damus.xcodeproj/project.pbxproj @@ -34,6 +34,8 @@ 4C3AC79B28306D7B00E1F516 /* Contacts.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C3AC79A28306D7B00E1F516 /* Contacts.swift */; }; 4C3AC79D2833036D00E1F516 /* FollowingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C3AC79C2833036D00E1F516 /* FollowingView.swift */; }; 4C3AC79F2833115300E1F516 /* FollowButtonView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C3AC79E2833115300E1F516 /* FollowButtonView.swift */; }; + 4C3AC7A12835A81400E1F516 /* SetupView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C3AC7A02835A81400E1F516 /* SetupView.swift */; }; + 4C3AC7A52836987600E1F516 /* MainTabView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C3AC7A42836987600E1F516 /* MainTabView.swift */; }; 4C3BEFD22819DB9B00B3DE84 /* ProfileModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C3BEFD12819DB9B00B3DE84 /* ProfileModel.swift */; }; 4C3BEFD42819DE8F00B3DE84 /* NostrKind.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C3BEFD32819DE8F00B3DE84 /* NostrKind.swift */; }; 4C3BEFD6281D995700B3DE84 /* ActionBarModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C3BEFD5281D995700B3DE84 /* ActionBarModel.swift */; }; @@ -121,6 +123,8 @@ 4C3AC79A28306D7B00E1F516 /* Contacts.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Contacts.swift; sourceTree = "<group>"; }; 4C3AC79C2833036D00E1F516 /* FollowingView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FollowingView.swift; sourceTree = "<group>"; }; 4C3AC79E2833115300E1F516 /* FollowButtonView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FollowButtonView.swift; sourceTree = "<group>"; }; + 4C3AC7A02835A81400E1F516 /* SetupView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SetupView.swift; sourceTree = "<group>"; }; + 4C3AC7A42836987600E1F516 /* MainTabView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainTabView.swift; sourceTree = "<group>"; }; 4C3BEFD12819DB9B00B3DE84 /* ProfileModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileModel.swift; sourceTree = "<group>"; }; 4C3BEFD32819DE8F00B3DE84 /* NostrKind.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NostrKind.swift; sourceTree = "<group>"; }; 4C3BEFD5281D995700B3DE84 /* ActionBarModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActionBarModel.swift; sourceTree = "<group>"; }; @@ -240,6 +244,8 @@ 4C363AA128296A7E006E126D /* SearchView.swift */, 4C3AC79C2833036D00E1F516 /* FollowingView.swift */, 4C3AC79E2833115300E1F516 /* FollowButtonView.swift */, + 4C3AC7A02835A81400E1F516 /* SetupView.swift */, + 4C3AC7A42836987600E1F516 /* MainTabView.swift */, ); path = Views; sourceTree = "<group>"; @@ -519,6 +525,7 @@ 4C3AC79F2833115300E1F516 /* FollowButtonView.swift in Sources */, 4C3BEFD22819DB9B00B3DE84 /* ProfileModel.swift in Sources */, 4C0A3F93280F66F5000448DE /* ReplyMap.swift in Sources */, + 4C3AC7A12835A81400E1F516 /* SetupView.swift in Sources */, 4CACA9DC280C38C000D9BBE8 /* Profiles.swift in Sources */, 4C363A94282704FA006E126D /* Post.swift in Sources */, 4C363A8828236948006E126D /* BlocksView.swift in Sources */, @@ -545,6 +552,7 @@ 4C75EFB528049D790006080F /* Relay.swift in Sources */, 4CEE2AF1280B216B00AB5EEF /* EventDetailView.swift in Sources */, 4C75EFBB2804A34C0006080F /* ProofOfWork.swift in Sources */, + 4C3AC7A52836987600E1F516 /* MainTabView.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/damus/ContentView.swift b/damus/ContentView.swift @@ -67,43 +67,8 @@ struct ContentView: View { let sub_id = UUID().description let pubkey = MY_PUBKEY - let privkey = MY_PRIVKEY + let privkey = MY_PRIVKEY - var NotificationTab: some View { - ZStack(alignment: .center) { - TabButton(timeline: .notifications, img: "bell") - - if new_notifications { - Circle() - .size(CGSize(width: 8, height: 8)) - .frame(width: 10, height: 10, alignment: .topTrailing) - .alignmentGuide(VerticalAlignment.center) { a in a.height + 2.0 } - .alignmentGuide(HorizontalAlignment.center) { a in a.width - 12.0 } - .foregroundColor(.accentColor) - } - } - } - - func TabButton(timeline: Timeline, img: String) -> some View { - Button(action: {switch_timeline(timeline)}) { - Label("", systemImage: selected_timeline == timeline ? "\(img).fill" : img) - .contentShape(Rectangle()) - .frame(maxWidth: .infinity, minHeight: 30.0) - } - .foregroundColor(selected_timeline != timeline ? .gray : .primary) - } - - var TabBar: some View { - VStack { - Divider() - HStack { - TabButton(timeline: .home, img: "house") - NotificationTab - TabButton(timeline: .global, img: "globe.americas") - } - } - } - var LoadingContainer: some View { VStack { HStack { @@ -210,7 +175,7 @@ struct ContentView: View { } } - TabBar + TabBar(new_notifications: $new_notifications, selected: $selected_timeline, action: switch_timeline) } .onAppear() { self.connect() diff --git a/damus/Views/MainTabView.swift b/damus/Views/MainTabView.swift @@ -0,0 +1,81 @@ +// +// MainTabView.swift +// damus +// +// Created by William Casarin on 2022-05-19. +// + +import SwiftUI + +struct MainTabView: View { + var body: some View { + Text(/*@START_MENU_TOKEN@*/"Hello, World!"/*@END_MENU_TOKEN@*/) + } +} + +struct MainTabView_Previews: PreviewProvider { + static var previews: some View { + MainTabView() + } +} + +struct NotificationsTab: View { + @Binding var new_notifications: Bool + @Binding var selected: Timeline? + + let action: (Timeline) -> () + + var body: some View { + ZStack(alignment: .center) { + TabButton(timeline: .notifications, img: "bell", selected: $selected, action: action) + + if new_notifications { + Circle() + .size(CGSize(width: 8, height: 8)) + .frame(width: 10, height: 10, alignment: .topTrailing) + .alignmentGuide(VerticalAlignment.center) { a in a.height + 2.0 } + .alignmentGuide(HorizontalAlignment.center) { a in a.width - 12.0 } + .foregroundColor(.accentColor) + } + } + } +} + + +struct TabButton: View { + let timeline: Timeline + let img: String + + @Binding var selected: Timeline? + + let action: (Timeline) -> () + + var body: some View { + Button(action: {action(timeline)}) { + Label("", systemImage: selected == timeline ? "\(img).fill" : img) + .contentShape(Rectangle()) + .frame(maxWidth: .infinity, minHeight: 30.0) + } + .foregroundColor(selected != timeline ? .gray : .primary) + } +} + + +struct TabBar: View { + @Binding var new_notifications: Bool + @Binding var selected: Timeline? + + let action: (Timeline) -> () + + var body: some View { + VStack { + Divider() + HStack { + TabButton(timeline: .home, img: "house", selected: $selected, action: action) + NotificationsTab(new_notifications: $new_notifications, selected: $selected, action: action) + TabButton(timeline: .global, img: "globe.americas", selected: $selected, action: action) + } + } + } +} + diff --git a/damus/Views/SetupView.swift b/damus/Views/SetupView.swift @@ -0,0 +1,20 @@ +// +// SetupView.swift +// damus +// +// Created by William Casarin on 2022-05-18. +// + +import SwiftUI + +struct SetupView: View { + var body: some View { + Text(/*@START_MENU_TOKEN@*/"Hello, World!"/*@END_MENU_TOKEN@*/) + } +} + +struct SetupView_Previews: PreviewProvider { + static var previews: some View { + SetupView() + } +}