From 4ba9c5243947ca3f745f5cbd15ff68b896f244bc Mon Sep 17 00:00:00 2001 From: Ivan Ivanenko Date: Wed, 6 Aug 2025 16:21:39 +0300 Subject: [PATCH] refactoring --- .gitignore | 1 + app/build.gradle | 1 + .../foobnix/ui2/fragment/SearchFragment2.java | 8 +- .../appcompose/booksync/GoogleSingInBar.kt | 81 ------------------- .../lib/gdrive/GoogleSignInComposeHelper.kt | 11 +-- .../librera/lib/gdrive/GoogleSingInBar.kt | 17 ++-- .../lib/gdrive/GoogleSingInViewModel.kt | 4 - 7 files changed, 17 insertions(+), 106 deletions(-) delete mode 100644 appCompose/src/main/java/mobi/librera/appcompose/booksync/GoogleSingInBar.kt diff --git a/.gitignore b/.gitignore index 7a01f0eaa..cfd47a699 100644 --- a/.gitignore +++ b/.gitignore @@ -13,6 +13,7 @@ /smartreflow/bin/ /pro/bin/ /app/bin/ +/bin /Builder/.vscode/ /Builder/mupdf* /docs/Gemfile diff --git a/app/build.gradle b/app/build.gradle index 73470a92d..c0ae655ff 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,5 +1,6 @@ plugins { id 'com.android.application' + id 'com.google.gms.google-services' } def taskName = getGradle().getStartParameter().getTaskRequests().toString() diff --git a/app/src/main/java/com/foobnix/ui2/fragment/SearchFragment2.java b/app/src/main/java/com/foobnix/ui2/fragment/SearchFragment2.java index 82e992272..e62560281 100644 --- a/app/src/main/java/com/foobnix/ui2/fragment/SearchFragment2.java +++ b/app/src/main/java/com/foobnix/ui2/fragment/SearchFragment2.java @@ -363,12 +363,8 @@ public class SearchFragment2 extends UIFragment { ComposeView composeView = (ComposeView) view.findViewById(R.id.compose_view); GoogleSignInComposeHelper.createSimpleGoogleSignInButton( - composeView, - "Sign in with Google", - () -> { - // Handle sign-in click - LOG.d("Google Sign-In button clicked"); - } + composeView, getString(R.string.default_web_client_id) + ); secondTopPanel = view.findViewById(R.id.secondTopPanel); diff --git a/appCompose/src/main/java/mobi/librera/appcompose/booksync/GoogleSingInBar.kt b/appCompose/src/main/java/mobi/librera/appcompose/booksync/GoogleSingInBar.kt deleted file mode 100644 index 80dc56bce..000000000 --- a/appCompose/src/main/java/mobi/librera/appcompose/booksync/GoogleSingInBar.kt +++ /dev/null @@ -1,81 +0,0 @@ -package mobi.librera.appcompose.booksync - -import androidx.compose.foundation.layout.Arrangement -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.layout.size -import androidx.compose.foundation.shape.CircleShape -import androidx.compose.material3.Text -import androidx.compose.runtime.Composable -import androidx.compose.runtime.LaunchedEffect -import androidx.compose.runtime.collectAsState -import androidx.compose.runtime.getValue -import androidx.compose.runtime.rememberCoroutineScope -import androidx.compose.ui.Alignment -import androidx.compose.ui.Modifier -import androidx.compose.ui.draw.clip -import androidx.compose.ui.platform.LocalContext -import androidx.compose.ui.unit.dp -import coil3.compose.AsyncImage -import kotlinx.coroutines.launch -import mobi.librera.lib.gdrive.GoogleSignInButton -import org.koin.androidx.compose.koinViewModel - - -@Composable -fun GoogleSignInScreen( -) { - val scope = rememberCoroutineScope() - val context = LocalContext.current - - - val viewModel: GoogleSingInViewModel = koinViewModel() - val singInState by viewModel.singInState.collectAsState() - - LaunchedEffect(Unit) { - viewModel.checkSingInState() - } - - when (val state = singInState) { - is SingInState.NotSignIn -> { - GoogleSignInButton( - "Sing in with Google", onClick = { - scope.launch { - viewModel.signInWithGoogle(context) - } - }) - } - - is SingInState.Success -> { - Row( - verticalAlignment = Alignment.Top, - horizontalArrangement = Arrangement.Start - ) { - AsyncImage( - model = state.user.photoUrl, - modifier = Modifier - .size(40.dp) - .clip(CircleShape), - contentDescription = state.user.name - ) - Column(Modifier.padding(start = 12.dp)) { - Text(state.user.name) - Text(state.user.email) - } - } - GoogleSignInButton( - "Sing out", onClick = { - scope.launch { - viewModel.signOut(context) - } - }) - } - - is SingInState.Error -> { - Text("Error: ${state.message}") - } - } - - -} \ No newline at end of file diff --git a/appLibDrive/src/main/java/mobi/librera/lib/gdrive/GoogleSignInComposeHelper.kt b/appLibDrive/src/main/java/mobi/librera/lib/gdrive/GoogleSignInComposeHelper.kt index afc1634cd..79ace30c6 100644 --- a/appLibDrive/src/main/java/mobi/librera/lib/gdrive/GoogleSignInComposeHelper.kt +++ b/appLibDrive/src/main/java/mobi/librera/lib/gdrive/GoogleSignInComposeHelper.kt @@ -6,16 +6,11 @@ object GoogleSignInComposeHelper { @JvmStatic fun createSimpleGoogleSignInButton( - composeView: ComposeView, - buttonText: String, - onSignInClick: Runnable + composeView: ComposeView, clientId: String ) { composeView.setContent { - GoogleSignInButton( - text = buttonText, - onClick = { - onSignInClick.run() - } + GoogleSignInScreen( + clientId ) } } diff --git a/appLibDrive/src/main/java/mobi/librera/lib/gdrive/GoogleSingInBar.kt b/appLibDrive/src/main/java/mobi/librera/lib/gdrive/GoogleSingInBar.kt index 4f965c87f..0040a2b8b 100644 --- a/appLibDrive/src/main/java/mobi/librera/lib/gdrive/GoogleSingInBar.kt +++ b/appLibDrive/src/main/java/mobi/librera/lib/gdrive/GoogleSingInBar.kt @@ -49,7 +49,8 @@ fun GoogleSignInScreen( is SingInState.Success -> { Row( - verticalAlignment = Alignment.Top, + modifier = Modifier.padding(4.dp), + verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.Start ) { AsyncImage( @@ -63,13 +64,15 @@ fun GoogleSignInScreen( Text(state.user.name) Text(state.user.email) } + + GoogleSignInButton( + "Sing out", onClick = { + scope.launch { + viewModel.signOut(context) + } + }) } - GoogleSignInButton( - "Sing out", onClick = { - scope.launch { - viewModel.signOut(context) - } - }) + } is SingInState.Error -> { diff --git a/appLibDrive/src/main/java/mobi/librera/lib/gdrive/GoogleSingInViewModel.kt b/appLibDrive/src/main/java/mobi/librera/lib/gdrive/GoogleSingInViewModel.kt index 9b55b5beb..9be20cec2 100644 --- a/appLibDrive/src/main/java/mobi/librera/lib/gdrive/GoogleSingInViewModel.kt +++ b/appLibDrive/src/main/java/mobi/librera/lib/gdrive/GoogleSingInViewModel.kt @@ -21,10 +21,6 @@ import kotlinx.coroutines.coroutineScope import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow -// TODO: These imports should be injected or passed as parameters to avoid circular dependency -// import mobi.librera.appcompose.App -// import mobi.librera.appcompose.R -// import mobi.librera.appcompose.room.BookRepository data class User(val name: String, val email: String, val photoUrl: Uri?)