diff --git a/ElementX/Sources/Screens/Settings/SettingsScreen/View/SettingsScreen.swift b/ElementX/Sources/Screens/Settings/SettingsScreen/View/SettingsScreen.swift index 0430cf4c9..74c7e51d9 100644 --- a/ElementX/Sources/Screens/Settings/SettingsScreen/View/SettingsScreen.swift +++ b/ElementX/Sources/Screens/Settings/SettingsScreen/View/SettingsScreen.swift @@ -165,9 +165,12 @@ struct SettingsScreen: View { versionText .frame(maxWidth: .infinity) - context.viewState.deviceID.map(Text.init) + if let deviceID = context.viewState.deviceID { + Text(deviceID) + } } .compoundFormSectionFooter() + .textSelection(.enabled) .padding(.top, 24) } .compoundFormSection() @@ -201,7 +204,8 @@ private extension TimelineStyle { struct SettingsScreen_Previews: PreviewProvider { static let viewModel = { - let userSession = MockUserSession(clientProxy: MockClientProxy(userID: "@userid:example.com"), + let userSession = MockUserSession(clientProxy: MockClientProxy(userID: "@userid:example.com", + deviceID: "AAAAAAAAAAA"), mediaProvider: MockMediaProvider()) ServiceLocator.shared.settings.notificationSettingsEnabled = true return SettingsScreenViewModel(userSession: userSession, diff --git a/ElementX/Sources/Services/Client/ClientProxy.swift b/ElementX/Sources/Services/Client/ClientProxy.swift index 2b04fa4d3..c2545c97c 100644 --- a/ElementX/Sources/Services/Client/ClientProxy.swift +++ b/ElementX/Sources/Services/Client/ClientProxy.swift @@ -87,7 +87,7 @@ class ClientProxy: ClientProxyProtocol { } } - var deviceId: String? { + var deviceID: String? { do { return try client.deviceId() } catch { diff --git a/ElementX/Sources/Services/Client/ClientProxyProtocol.swift b/ElementX/Sources/Services/Client/ClientProxyProtocol.swift index fda903e73..0cea3ba5c 100644 --- a/ElementX/Sources/Services/Client/ClientProxyProtocol.swift +++ b/ElementX/Sources/Services/Client/ClientProxyProtocol.swift @@ -68,7 +68,7 @@ protocol ClientProxyProtocol: AnyObject, MediaLoaderProtocol { var userID: String { get } - var deviceId: String? { get } + var deviceID: String? { get } var homeserver: String { get } diff --git a/ElementX/Sources/Services/Client/MockClientProxy.swift b/ElementX/Sources/Services/Client/MockClientProxy.swift index 9226e4287..7c840dc57 100644 --- a/ElementX/Sources/Services/Client/MockClientProxy.swift +++ b/ElementX/Sources/Services/Client/MockClientProxy.swift @@ -22,7 +22,7 @@ class MockClientProxy: ClientProxyProtocol { let callbacks = PassthroughSubject() let userID: String - let deviceId: String? = nil + let deviceID: String? let homeserver = "" let restorationToken: RestorationToken? = nil @@ -34,8 +34,9 @@ class MockClientProxy: ClientProxyProtocol { var isSyncing: Bool { false } - internal init(userID: String, roomSummaryProvider: RoomSummaryProviderProtocol? = MockRoomSummaryProvider()) { + internal init(userID: String, deviceID: String? = nil, roomSummaryProvider: RoomSummaryProviderProtocol? = MockRoomSummaryProvider()) { self.userID = userID + self.deviceID = deviceID self.roomSummaryProvider = roomSummaryProvider } diff --git a/ElementX/Sources/Services/Session/MockUserSession.swift b/ElementX/Sources/Services/Session/MockUserSession.swift index 61bf0b2d1..5182e7145 100644 --- a/ElementX/Sources/Services/Session/MockUserSession.swift +++ b/ElementX/Sources/Services/Session/MockUserSession.swift @@ -20,7 +20,7 @@ struct MockUserSession: UserSessionProtocol { let callbacks = PassthroughSubject() let sessionVerificationController: SessionVerificationControllerProxyProtocol? = nil var userID: String { clientProxy.userID } - var deviceID: String? { clientProxy.deviceId } + var deviceID: String? { clientProxy.deviceID } var homeserver: String { clientProxy.homeserver } let clientProxy: ClientProxyProtocol let mediaProvider: MediaProviderProtocol diff --git a/ElementX/Sources/Services/Session/UserSession.swift b/ElementX/Sources/Services/Session/UserSession.swift index 71c371616..201e4f8b9 100644 --- a/ElementX/Sources/Services/Session/UserSession.swift +++ b/ElementX/Sources/Services/Session/UserSession.swift @@ -23,7 +23,7 @@ class UserSession: UserSessionProtocol { private var authErrorCancellable: AnyCancellable? var userID: String { clientProxy.userID } - var deviceID: String? { clientProxy.deviceId } + var deviceID: String? { clientProxy.deviceID } var homeserver: String { clientProxy.homeserver } let clientProxy: ClientProxyProtocol diff --git a/changelog.d/623.change b/changelog.d/623.change new file mode 100644 index 000000000..15897deb5 --- /dev/null +++ b/changelog.d/623.change @@ -0,0 +1 @@ +Make the app version and the device ID copyable in the Settings screen. \ No newline at end of file