diff --git a/android/src/main/res/drawable-nodpi/continue_with_google_rd.xml b/android/src/main/res/drawable-nodpi/continue_with_google_rd.xml new file mode 100644 index 000000000..6a2f91e63 --- /dev/null +++ b/android/src/main/res/drawable-nodpi/continue_with_google_rd.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + diff --git a/ios/Droidcon/Droidcon/AppDelegate.swift b/ios/Droidcon/Droidcon/AppDelegate.swift index 690b33aa1..7e3740e52 100644 --- a/ios/Droidcon/Droidcon/AppDelegate.swift +++ b/ios/Droidcon/Droidcon/AppDelegate.swift @@ -9,7 +9,7 @@ class AppDelegate: NSObject, UIApplicationDelegate { lazy var log = koin.get(objCClass: Logger.self, parameter: "AppDelegate") as! Logger lazy var analytics = koin.get(objCProtocol: AnalyticsService.self, qualifier: nil) as! AnalyticsService lazy var appChecker = koin.get(objCClass: AppChecker.self) as! AppChecker - lazy var firebaseService = koin.get(objCClass: AuthenticationService.self, qualifier: nil) as! AuthenticationService + lazy var authenticationService = koin.get(objCProtocol: AuthenticationService.self, qualifier: nil) as! AuthenticationService var firebaseAuthListener:AuthStateDidChangeListenerHandle? @@ -29,14 +29,14 @@ class AppDelegate: NSObject, UIApplicationDelegate { firebaseAuthListener = Auth.auth().addStateDidChangeListener() { auth, user in if let user { - self.firebaseService.setCredentials( + self.authenticationService.setCredentials( id: user.uid, name: user.displayName, email: user.email, pictureUrl: user.photoURL?.absoluteString ) } else { - self.firebaseService.clearCredentials() + self.authenticationService.clearCredentials() } } diff --git a/ios/Droidcon/Droidcon/Assets.xcassets/continue_with_google_rd.imageset/Contents.json b/ios/Droidcon/Droidcon/Assets.xcassets/continue_with_google_rd.imageset/Contents.json new file mode 100644 index 000000000..35bc0fb51 --- /dev/null +++ b/ios/Droidcon/Droidcon/Assets.xcassets/continue_with_google_rd.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "android_neutral_rd_ctn.svg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/ios/Droidcon/Droidcon/Assets.xcassets/continue_with_google_rd.imageset/android_neutral_rd_ctn.svg b/ios/Droidcon/Droidcon/Assets.xcassets/continue_with_google_rd.imageset/android_neutral_rd_ctn.svg new file mode 100644 index 000000000..158d32283 --- /dev/null +++ b/ios/Droidcon/Droidcon/Assets.xcassets/continue_with_google_rd.imageset/android_neutral_rd_ctn.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/ios/Droidcon/Droidcon/Settings/SettingsView.swift b/ios/Droidcon/Droidcon/Settings/SettingsView.swift index 9e8818d36..e69e3afed 100644 --- a/ios/Droidcon/Droidcon/Settings/SettingsView.swift +++ b/ios/Droidcon/Droidcon/Settings/SettingsView.swift @@ -48,8 +48,9 @@ struct SettingsView: View { showingAlert = true } } + .buttonStyle(FilledButtonStyle()) } else { - Button("Settings.SignIn"){ + Button(action: { if viewModel.signIn() { errorMessage = "" showingAlert = false @@ -57,7 +58,9 @@ struct SettingsView: View { errorMessage = "Failed To Sign In" showingAlert = true } - } + }, label: { + Image("continue_with_google_rd") + }) } AboutView(viewModel: viewModel.about) diff --git a/ios/Droidcon/Droidcon/en.lproj/Localizable.strings b/ios/Droidcon/Droidcon/en.lproj/Localizable.strings index 6b3347f6f..06801ed15 100644 --- a/ios/Droidcon/Droidcon/en.lproj/Localizable.strings +++ b/ios/Droidcon/Droidcon/en.lproj/Localizable.strings @@ -37,7 +37,6 @@ "Settings.Reminders" = "Enable reminders"; "Settings.Compose" = "Use compose for iOS"; "Settings.About" = "About"; -"Settings.SignIn" = "Sign In"; "Settings.SignOut" = "Sign Out"; "About.Title" = "About"; diff --git a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/settings/SettingsView.kt b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/settings/SettingsView.kt index b53c07378..30d380e31 100644 --- a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/settings/SettingsView.kt +++ b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/settings/SettingsView.kt @@ -1,7 +1,9 @@ package co.touchlab.droidcon.ui.settings +import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxHeight import androidx.compose.foundation.layout.fillMaxWidth @@ -18,6 +20,7 @@ import androidx.compose.material3.Icon import androidx.compose.material3.Scaffold import androidx.compose.material3.Switch import androidx.compose.material3.Text +import androidx.compose.material3.TextButton import androidx.compose.material3.TopAppBar import androidx.compose.material3.TopAppBarDefaults import androidx.compose.material3.rememberTopAppBarState @@ -25,10 +28,12 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.input.nestedscroll.nestedScroll import androidx.compose.ui.unit.dp import co.touchlab.droidcon.ui.theme.Dimensions +import co.touchlab.droidcon.ui.util.LocalImage import co.touchlab.droidcon.ui.util.observeAsState import co.touchlab.droidcon.viewmodel.settings.SettingsViewModel import org.brightify.hyperdrive.multiplatformx.property.MutableObservableProperty @@ -75,12 +80,16 @@ internal fun SettingsView( Button( onClick = { if (isAuthenticated) viewModel.signOut() else viewModel.signIn() - } + }, + contentPadding = PaddingValues(), ) { if (isAuthenticated) { - Text("Sign Out") + Text("Sign Out", modifier = Modifier.padding(horizontal = 20.dp)) } else { - Text("Sign In") + LocalImage( + imageResourceName = "continue_with_google_rd", + modifier = Modifier + ) } }