diff --git a/apps/ios/Shared/Assets.xcassets/AppIcon.appiconset/Contents.json b/apps/ios/Shared/Assets.xcassets/AppIcon.appiconset/Contents.json index c136eaff76..d6bfcc76f4 100644 --- a/apps/ios/Shared/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/apps/ios/Shared/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -1,91 +1,115 @@ { "images" : [ { + "filename" : "Icon-App-20x20@2x-1.png", "idiom" : "iphone", "scale" : "2x", "size" : "20x20" }, { + "filename" : "Icon-App-20x20@3x.png", "idiom" : "iphone", "scale" : "3x", "size" : "20x20" }, { + "filename" : "Icon-App-29x29@1x.png", + "idiom" : "iphone", + "scale" : "1x", + "size" : "29x29" + }, + { + "filename" : "Icon-App-29x29@2x.png", "idiom" : "iphone", "scale" : "2x", "size" : "29x29" }, { + "filename" : "Icon-App-29x29@3x.png", "idiom" : "iphone", "scale" : "3x", "size" : "29x29" }, { + "filename" : "Icon-App-40x40@2x.png", "idiom" : "iphone", "scale" : "2x", "size" : "40x40" }, { + "filename" : "Icon-App-40x40@3x.png", "idiom" : "iphone", "scale" : "3x", "size" : "40x40" }, { + "filename" : "Icon-App-60x60@2x.png", "idiom" : "iphone", "scale" : "2x", "size" : "60x60" }, { + "filename" : "Icon-App-60x60@3x.png", "idiom" : "iphone", "scale" : "3x", "size" : "60x60" }, { + "filename" : "Icon-App-20x20@1x.png", "idiom" : "ipad", "scale" : "1x", "size" : "20x20" }, { + "filename" : "Icon-App-20x20@2x.png", "idiom" : "ipad", "scale" : "2x", "size" : "20x20" }, { + "filename" : "Icon-App-29x29@1x-1.png", "idiom" : "ipad", "scale" : "1x", "size" : "29x29" }, { + "filename" : "Icon-App-29x29@2x-1.png", "idiom" : "ipad", "scale" : "2x", "size" : "29x29" }, { + "filename" : "Icon-App-40x40@1x.png", "idiom" : "ipad", "scale" : "1x", "size" : "40x40" }, { + "filename" : "Icon-App-40x40@2x-1.png", "idiom" : "ipad", "scale" : "2x", "size" : "40x40" }, { + "filename" : "Icon-App-76x76@1x.png", "idiom" : "ipad", "scale" : "1x", "size" : "76x76" }, { + "filename" : "Icon-App-76x76@2x.png", "idiom" : "ipad", "scale" : "2x", "size" : "76x76" }, { + "filename" : "Icon-App-83.5x83.5@2x.png", "idiom" : "ipad", "scale" : "2x", "size" : "83.5x83.5" }, { + "filename" : "Icon-App-1024x1024@1x.png", "idiom" : "ios-marketing", "scale" : "1x", "size" : "1024x1024" diff --git a/apps/ios/Shared/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/apps/ios/Shared/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png new file mode 100644 index 0000000000..6dbc1d95ad Binary files /dev/null and b/apps/ios/Shared/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png differ diff --git a/apps/ios/Shared/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png b/apps/ios/Shared/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png new file mode 100644 index 0000000000..280e05c98e Binary files /dev/null and b/apps/ios/Shared/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png differ diff --git a/apps/ios/Shared/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x-1.png b/apps/ios/Shared/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x-1.png new file mode 100644 index 0000000000..12a1031ff0 Binary files /dev/null and b/apps/ios/Shared/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x-1.png differ diff --git a/apps/ios/Shared/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/apps/ios/Shared/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png new file mode 100644 index 0000000000..12a1031ff0 Binary files /dev/null and b/apps/ios/Shared/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png differ diff --git a/apps/ios/Shared/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/apps/ios/Shared/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png new file mode 100644 index 0000000000..910e01901d Binary files /dev/null and b/apps/ios/Shared/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png differ diff --git a/apps/ios/Shared/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x-1.png b/apps/ios/Shared/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x-1.png new file mode 100644 index 0000000000..3fa10ee124 Binary files /dev/null and b/apps/ios/Shared/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x-1.png differ diff --git a/apps/ios/Shared/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/apps/ios/Shared/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png new file mode 100644 index 0000000000..3fa10ee124 Binary files /dev/null and b/apps/ios/Shared/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png differ diff --git a/apps/ios/Shared/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x-1.png b/apps/ios/Shared/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x-1.png new file mode 100644 index 0000000000..8ab45daa1b Binary files /dev/null and b/apps/ios/Shared/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x-1.png differ diff --git a/apps/ios/Shared/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/apps/ios/Shared/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png new file mode 100644 index 0000000000..8ab45daa1b Binary files /dev/null and b/apps/ios/Shared/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png differ diff --git a/apps/ios/Shared/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/apps/ios/Shared/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png new file mode 100644 index 0000000000..b0191a721f Binary files /dev/null and b/apps/ios/Shared/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png differ diff --git a/apps/ios/Shared/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/apps/ios/Shared/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png new file mode 100644 index 0000000000..12a1031ff0 Binary files /dev/null and b/apps/ios/Shared/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png differ diff --git a/apps/ios/Shared/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x-1.png b/apps/ios/Shared/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x-1.png new file mode 100644 index 0000000000..c4eeb166ac Binary files /dev/null and b/apps/ios/Shared/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x-1.png differ diff --git a/apps/ios/Shared/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/apps/ios/Shared/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png new file mode 100644 index 0000000000..c4eeb166ac Binary files /dev/null and b/apps/ios/Shared/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png differ diff --git a/apps/ios/Shared/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/apps/ios/Shared/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png new file mode 100644 index 0000000000..1c3a1a3e2b Binary files /dev/null and b/apps/ios/Shared/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png differ diff --git a/apps/ios/Shared/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/apps/ios/Shared/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png new file mode 100644 index 0000000000..1c3a1a3e2b Binary files /dev/null and b/apps/ios/Shared/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png differ diff --git a/apps/ios/Shared/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/apps/ios/Shared/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png new file mode 100644 index 0000000000..853f24990f Binary files /dev/null and b/apps/ios/Shared/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png differ diff --git a/apps/ios/Shared/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/apps/ios/Shared/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png new file mode 100644 index 0000000000..0f589f5e97 Binary files /dev/null and b/apps/ios/Shared/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png differ diff --git a/apps/ios/Shared/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/apps/ios/Shared/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png new file mode 100644 index 0000000000..01d4f69d6a Binary files /dev/null and b/apps/ios/Shared/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png differ diff --git a/apps/ios/Shared/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/apps/ios/Shared/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png new file mode 100644 index 0000000000..71fb5a0b2f Binary files /dev/null and b/apps/ios/Shared/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png differ diff --git a/apps/ios/Shared/ContentView.swift b/apps/ios/Shared/ContentView.swift index 37463242e8..60e98fb4c5 100644 --- a/apps/ios/Shared/ContentView.swift +++ b/apps/ios/Shared/ContentView.swift @@ -9,7 +9,7 @@ import SwiftUI struct ContentView: View { @EnvironmentObject var chatModel: ChatModel - + var body: some View { if let user = chatModel.currentUser { ChatListView(user: user) diff --git a/apps/ios/Shared/Model/ChatModel.swift b/apps/ios/Shared/Model/ChatModel.swift index 60a8a9b925..f483f6712e 100644 --- a/apps/ios/Shared/Model/ChatModel.swift +++ b/apps/ios/Shared/Model/ChatModel.swift @@ -56,12 +56,17 @@ final class ChatModel: ObservableObject { if let ix = chats.firstIndex(where: { $0.id == cInfo.id }) { chats[ix].chatItems = [cItem] if chatId != cInfo.id { - let chat = chats.remove(at: ix) - chats.insert(chat, at: 0) + withAnimation { + let chat = chats.remove(at: ix) + chats.insert(chat, at: 0) + } + if chatId != nil { + // meesage arrived to some other chat + } } } if chatId == cInfo.id { - chatItems.append(cItem) + withAnimation { chatItems.append(cItem) } } } @@ -326,8 +331,8 @@ enum CIContent: Decodable { var text: String { get { switch self { - case let .sndMsgContent(mc): return mc.string - case let .rcvMsgContent(mc): return mc.string + case let .sndMsgContent(mc): return mc.text + case let .rcvMsgContent(mc): return mc.text } } } @@ -338,7 +343,7 @@ enum MsgContent { case unknown(type: String, text: String) case invalid(error: String) - var string: String { + var text: String { get { switch self { case let .text(text): return text diff --git a/apps/ios/Shared/Views/UserSettings/SettingsView.swift b/apps/ios/Shared/Views/UserSettings/SettingsView.swift index 0d26ad87ca..a3055c1f93 100644 --- a/apps/ios/Shared/Views/UserSettings/SettingsView.swift +++ b/apps/ios/Shared/Views/UserSettings/SettingsView.swift @@ -12,8 +12,44 @@ struct SettingsView: View { @EnvironmentObject var chatModel: ChatModel var body: some View { - UserProfile() - UserAddress() + let user: User = chatModel.currentUser! + + return NavigationView { + List { + Section("You") { + NavigationLink { + UserProfile() + .navigationTitle("Your chat profile") + } label: { + HStack { + Image(systemName: "person.crop.circle") + .padding(.trailing, 8) + VStack(alignment: .leading) { + Text(user.profile.displayName) + .fontWeight(.bold) + .font(.title2) + Text(user.profile.fullName) + } + } + } + NavigationLink { + UserAddress() + .navigationTitle("Your chat address") + } label: { + HStack { + Image(systemName: "qrcode") + .padding(.trailing, 8) + Text("Your SimpleX contact address") + } + } + } + +// Section("Your SimpleX servers") { +// +// } + } + .navigationTitle("Settings") + } } } diff --git a/apps/ios/Shared/Views/UserSettings/UserAddress.swift b/apps/ios/Shared/Views/UserSettings/UserAddress.swift index 1cd497a4d8..3764fb4587 100644 --- a/apps/ios/Shared/Views/UserSettings/UserAddress.swift +++ b/apps/ios/Shared/Views/UserSettings/UserAddress.swift @@ -15,9 +15,6 @@ struct UserAddress: View { var body: some View { VStack (alignment: .leading) { - Text("Your chat address") - .font(.title) - .padding(.bottom) Text("Your can share your address as a link or as a QR code - anybody will be able to connect to you, and if you later delete it - you won't lose your contacts.") .padding(.bottom) if let userAdress = chatModel.userAddress { @@ -62,6 +59,7 @@ struct UserAddress: View { } } .padding() + .frame(maxHeight: .infinity, alignment: .top) } } diff --git a/apps/ios/Shared/Views/UserSettings/UserProfile.swift b/apps/ios/Shared/Views/UserSettings/UserProfile.swift index b58648b13e..6487e25200 100644 --- a/apps/ios/Shared/Views/UserSettings/UserProfile.swift +++ b/apps/ios/Shared/Views/UserSettings/UserProfile.swift @@ -17,9 +17,6 @@ struct UserProfile: View { let user: User = chatModel.currentUser! return VStack(alignment: .leading) { - Text("Your chat profile") - .font(.title) - .padding(.bottom) Text("Your profile is stored on your device and shared only with your contacts.\nSimpleX servers cannot see your profile.") .padding(.bottom) if editProfile { @@ -61,6 +58,7 @@ struct UserProfile: View { } } .padding() + .frame(maxHeight: .infinity, alignment: .top) } func saveProfile() { diff --git a/apps/ios/SimpleX.xcodeproj/project.pbxproj b/apps/ios/SimpleX.xcodeproj/project.pbxproj index ebbe134a39..88a5109902 100644 --- a/apps/ios/SimpleX.xcodeproj/project.pbxproj +++ b/apps/ios/SimpleX.xcodeproj/project.pbxproj @@ -263,15 +263,15 @@ 5CA059C2279559F40002BEB4 /* Shared */ = { isa = PBXGroup; children = ( - 5C764E87279CBC8E000C6508 /* Model */, 5CA059C3279559F40002BEB4 /* SimpleXApp.swift */, - 5C2E260927A2C63500F70299 /* MyPlayground.playground */, - 5C764E7F279C7276000C6508 /* dummy.m */, 5CA059C4279559F40002BEB4 /* ContentView.swift */, + 5C764E87279CBC8E000C6508 /* Model */, 5C2E260D27A30E2400F70299 /* Views */, 5CA059C5279559F40002BEB4 /* Assets.xcassets */, 5C764E7D279C7275000C6508 /* SimpleX (iOS)-Bridging-Header.h */, 5C764E7E279C7275000C6508 /* SimpleX (macOS)-Bridging-Header.h */, + 5C764E7F279C7276000C6508 /* dummy.m */, + 5C2E260927A2C63500F70299 /* MyPlayground.playground */, ); path = Shared; sourceTree = "";