From 68e356951772a8f594b85761c791fe34f391526b Mon Sep 17 00:00:00 2001 From: Satindar Dhillon Date: Tue, 9 Aug 2022 14:07:49 -0700 Subject: [PATCH 01/28] add android view model gradle deps --- android/Omnivore/app/build.gradle | 33 +++++++++++++++++++ .../app/omnivore/omnivore/MainActivity.kt | 4 ++- android/Omnivore/build.gradle | 1 + 3 files changed, 37 insertions(+), 1 deletion(-) diff --git a/android/Omnivore/app/build.gradle b/android/Omnivore/app/build.gradle index f403cb72d..5aff54871 100644 --- a/android/Omnivore/app/build.gradle +++ b/android/Omnivore/app/build.gradle @@ -59,4 +59,37 @@ dependencies { androidTestImplementation "androidx.compose.ui:ui-test-junit4:$compose_version" debugImplementation "androidx.compose.ui:ui-tooling:$compose_version" debugImplementation "androidx.compose.ui:ui-test-manifest:$compose_version" + + // Jetpack Lifecycle deps + + // ViewModel + implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version") + // ViewModel utilities for Compose + implementation("androidx.lifecycle:lifecycle-viewmodel-compose:$lifecycle_version") + // LiveData + implementation("androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version") + + // Saved state module for ViewModel + implementation("androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version") + + // Annotation processor +// kapt("androidx.lifecycle:lifecycle-compiler:$lifecycle_version") + // alternately - if using Java8, use the following instead of lifecycle-compiler + implementation("androidx.lifecycle:lifecycle-common-java8:$lifecycle_version") + + // optional - helpers for implementing LifecycleOwner in a Service +// implementation("androidx.lifecycle:lifecycle-service:$lifecycle_version") + + // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process +// implementation("androidx.lifecycle:lifecycle-process:$lifecycle_version") + + // optional - ReactiveStreams support for LiveData +// implementation("androidx.lifecycle:lifecycle-reactivestreams-ktx:$lifecycle_version") + + // optional - Test helpers for LiveData +// testImplementation("androidx.arch.core:core-testing:$arch_version") + + // optional - Test helpers for Lifecycle runtime +// testImplementation ("androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version") } + diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/MainActivity.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/MainActivity.kt index f81c89a49..8d1c43b06 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/MainActivity.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/MainActivity.kt @@ -25,6 +25,8 @@ import androidx.compose.ui.text.input.PasswordVisualTransformation import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import app.omnivore.omnivore.ui.theme.OmnivoreTheme +import androidx.compose.runtime.getValue +import androidx.compose.runtime.setValue class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { @@ -114,7 +116,7 @@ fun LoginFields( ).show() } }) { - Text("Login") + Text(text = "Login") } } } diff --git a/android/Omnivore/build.gradle b/android/Omnivore/build.gradle index abceb186b..8c51a74fc 100644 --- a/android/Omnivore/build.gradle +++ b/android/Omnivore/build.gradle @@ -1,6 +1,7 @@ buildscript { ext { compose_version = '1.1.0-beta01' + lifecycle_version = '2.5.1' } }// Top-level build file where you can add configuration options common to all sub-projects/modules. plugins { From 0f13d234e44989ee7238019fc95455ac94db9d74 Mon Sep 17 00:00:00 2001 From: Satindar Dhillon Date: Tue, 9 Aug 2022 14:32:35 -0700 Subject: [PATCH 02/28] add LoginViewModel --- .../java/app/omnivore/omnivore/LoginViewModel.kt | 11 +++++++++++ .../java/app/omnivore/omnivore/MainActivity.kt | 14 +++++++++----- 2 files changed, 20 insertions(+), 5 deletions(-) create mode 100644 android/Omnivore/app/src/main/java/app/omnivore/omnivore/LoginViewModel.kt diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/LoginViewModel.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/LoginViewModel.kt new file mode 100644 index 000000000..80b0654aa --- /dev/null +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/LoginViewModel.kt @@ -0,0 +1,11 @@ +package app.omnivore.omnivore + +import android.content.ContentValues +import android.util.Log +import androidx.lifecycle.ViewModel + +class LoginViewModel: ViewModel() { + fun login(email: String, password: String) { + Log.v(ContentValues.TAG, "in view model $email / $password") + } +} diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/MainActivity.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/MainActivity.kt index 8d1c43b06..fe3209e02 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/MainActivity.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/MainActivity.kt @@ -7,6 +7,7 @@ import android.util.Log import android.widget.Toast import androidx.activity.ComponentActivity import androidx.activity.compose.setContent +import androidx.activity.viewModels import androidx.compose.foundation.background import androidx.compose.foundation.layout.* import androidx.compose.foundation.text.KeyboardActions @@ -31,11 +32,14 @@ import androidx.compose.runtime.setValue class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) + + val viewModel: LoginViewModel by viewModels() + setContent { OmnivoreTheme { // A surface container using the 'background' color from the theme Surface(modifier = Modifier.fillMaxSize(), color = MaterialTheme.colors.background) { - LoginView() + LoginView(viewModel) } } } @@ -43,7 +47,7 @@ class MainActivity : ComponentActivity() { } @Composable -fun LoginView() { +fun LoginView(viewModel: LoginViewModel = LoginViewModel()) { var email by rememberSaveable { mutableStateOf("") } var password by rememberSaveable { mutableStateOf("") } @@ -59,7 +63,7 @@ fun LoginView() { password, onEmailChange = { email = it }, onPasswordChange = { password = it }, - onLoginClick = { Log.v(TAG, "$email / $password") } + onLoginClick = { viewModel.login(email, password) } ) } } @@ -71,7 +75,7 @@ fun LoginFields( password: String, onEmailChange: (String) -> Unit, onPasswordChange: (String) -> Unit, - onLoginClick: (String) -> Unit + onLoginClick: () -> Unit ) { val context = LocalContext.current val focusManager = LocalFocusManager.current @@ -106,7 +110,7 @@ fun LoginFields( Button(onClick = { if (email.isNotBlank() && password.isNotBlank()) { - onLoginClick(email) + onLoginClick() focusManager.clearFocus() } else { Toast.makeText( From 65a420ad8cf24014a912643ee97576b78c9867d6 Mon Sep 17 00:00:00 2001 From: Satindar Dhillon Date: Tue, 9 Aug 2022 19:47:15 -0700 Subject: [PATCH 03/28] use retrofir to make rest api call for email login --- android/Omnivore/app/build.gradle | 7 ++++ .../Omnivore/app/src/main/AndroidManifest.xml | 2 ++ .../app/omnivore/omnivore/LoginViewModel.kt | 18 +++++++++- .../app/omnivore/omnivore/RESTNetworker.kt | 36 +++++++++++++++++++ 4 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 android/Omnivore/app/src/main/java/app/omnivore/omnivore/RESTNetworker.kt diff --git a/android/Omnivore/app/build.gradle b/android/Omnivore/app/build.gradle index 5aff54871..0ff0eb597 100644 --- a/android/Omnivore/app/build.gradle +++ b/android/Omnivore/app/build.gradle @@ -91,5 +91,12 @@ dependencies { // optional - Test helpers for Lifecycle runtime // testImplementation ("androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version") + + implementation 'com.squareup.retrofit2:converter-gson:2.9.0' + implementation 'com.squareup.retrofit2:retrofit:2.9.0' + +// coroutines + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.4' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.4' } diff --git a/android/Omnivore/app/src/main/AndroidManifest.xml b/android/Omnivore/app/src/main/AndroidManifest.xml index f8e001890..3bf761e86 100644 --- a/android/Omnivore/app/src/main/AndroidManifest.xml +++ b/android/Omnivore/app/src/main/AndroidManifest.xml @@ -13,6 +13,7 @@ android:supportsRtl="true" android:theme="@style/Theme.Omnivore" tools:targetApi="31"> + + diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/LoginViewModel.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/LoginViewModel.kt index 80b0654aa..2ee230390 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/LoginViewModel.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/LoginViewModel.kt @@ -3,9 +3,25 @@ package app.omnivore.omnivore import android.content.ContentValues import android.util.Log import androidx.lifecycle.ViewModel +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.launch class LoginViewModel: ViewModel() { fun login(email: String, password: String) { - Log.v(ContentValues.TAG, "in view model $email / $password") + val emailLogin = RetrofitHelper.getInstance().create(EmailLoginSubmit::class.java) + + GlobalScope.launch { + val result = emailLogin.submitEmailLogin( + EmailLoginCredentials(email = email, password = password) + ) + + // TODO: parse out result and store auth token + // set some variable that compose can observe + if (result != null) { + Log.d(ContentValues.TAG, result.body().toString()) + } else { + Log.d(ContentValues.TAG, result.body().toString()) + } + } } } diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/RESTNetworker.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/RESTNetworker.kt new file mode 100644 index 000000000..4336f88ad --- /dev/null +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/RESTNetworker.kt @@ -0,0 +1,36 @@ +package app.omnivore.omnivore + +import retrofit2.Response +import retrofit2.Retrofit +import retrofit2.converter.gson.GsonConverterFactory +import retrofit2.http.Body +import retrofit2.http.Headers +import retrofit2.http.POST + + +data class EmailAuthPayload( + val authCookieString: String?, + val authToken: String?, + val pendingEmailVerification: Boolean? +) + +data class EmailLoginCredentials( + val email: String, + val password: String +) + +interface EmailLoginSubmit { + @Headers("Content-Type: application/json") + @POST("/api/mobile-auth/email-sign-in") + suspend fun submitEmailLogin(@Body credentials: EmailLoginCredentials): Response +} + +object RetrofitHelper { + private const val baseUrl = "https://api-demo.omnivore.app" + + fun getInstance(): Retrofit { + return Retrofit.Builder().baseUrl(baseUrl) + .addConverterFactory(GsonConverterFactory.create()) + .build() + } +} From db6561af1a4685c45a197d624ea76c8a4f154ef2 Mon Sep 17 00:00:00 2001 From: Satindar Dhillon Date: Wed, 10 Aug 2022 06:51:46 -0700 Subject: [PATCH 04/28] add datastore dep to gradle --- android/Omnivore/app/build.gradle | 3 +++ .../app/src/main/java/app/omnivore/omnivore/MainActivity.kt | 4 ---- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/android/Omnivore/app/build.gradle b/android/Omnivore/app/build.gradle index 0ff0eb597..9a55d5953 100644 --- a/android/Omnivore/app/build.gradle +++ b/android/Omnivore/app/build.gradle @@ -98,5 +98,8 @@ dependencies { // coroutines implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.4' implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.4' + + implementation "androidx.security:security-crypto:1.0.0" + implementation "androidx.datastore:datastore-preferences:1.0.0" } diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/MainActivity.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/MainActivity.kt index fe3209e02..43a236ee7 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/MainActivity.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/MainActivity.kt @@ -1,9 +1,6 @@ package app.omnivore.omnivore -import android.content.ContentValues.TAG -import android.content.res.Configuration import android.os.Bundle -import android.util.Log import android.widget.Toast import androidx.activity.ComponentActivity import androidx.activity.compose.setContent @@ -18,7 +15,6 @@ import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalFocusManager import androidx.compose.ui.text.input.ImeAction From 3d54da13a030c8eebcf677143dbe68007a0afcaf Mon Sep 17 00:00:00 2001 From: Satindar Dhillon Date: Wed, 10 Aug 2022 13:42:25 -0700 Subject: [PATCH 05/28] add dagger hilt android deps --- android/Omnivore/app/build.gradle | 14 ++++++++++++++ .../main/java/app/omnivore/omnivore/Constants.kt | 5 +++++ .../java/app/omnivore/omnivore/MainActivity.kt | 1 - .../java/app/omnivore/omnivore/RESTNetworker.kt | 4 +--- android/Omnivore/build.gradle | 6 ++++++ 5 files changed, 26 insertions(+), 4 deletions(-) create mode 100644 android/Omnivore/app/src/main/java/app/omnivore/omnivore/Constants.kt diff --git a/android/Omnivore/app/build.gradle b/android/Omnivore/app/build.gradle index 9a55d5953..4bb871bc5 100644 --- a/android/Omnivore/app/build.gradle +++ b/android/Omnivore/app/build.gradle @@ -1,6 +1,8 @@ plugins { id 'com.android.application' id 'org.jetbrains.kotlin.android' + id 'kotlin-kapt' + id 'dagger.hilt.android.plugin' } android { @@ -101,5 +103,17 @@ dependencies { implementation "androidx.security:security-crypto:1.0.0" implementation "androidx.datastore:datastore-preferences:1.0.0" + + + +// Activity KTX for viewModels() + // TODO: remove this since compose-activity imports ktx? +// implementation "androidx.activity:activity-ktx:1.3.1" + +//Dagger - Hilt + implementation 'com.google.dagger:hilt-android:2.43.2' + kapt 'com.google.dagger:hilt-compiler:2.43.2' + + implementation 'androidx.hilt:hilt-lifecycle-viewmodel:1.0.0-alpha03' } diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/Constants.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/Constants.kt new file mode 100644 index 000000000..67d2cd529 --- /dev/null +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/Constants.kt @@ -0,0 +1,5 @@ +package app.omnivore.omnivore + +object Constants { + const val serverProdURL = "https://api-demo.omnivore.app" +} diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/MainActivity.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/MainActivity.kt index 43a236ee7..fa310f6ae 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/MainActivity.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/MainActivity.kt @@ -64,7 +64,6 @@ fun LoginView(viewModel: LoginViewModel = LoginViewModel()) { } } -//Log.v(TAG, "${numerator / denominator}") @Composable fun LoginFields( email: String, diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/RESTNetworker.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/RESTNetworker.kt index 4336f88ad..d9bbf1ed6 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/RESTNetworker.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/RESTNetworker.kt @@ -26,10 +26,8 @@ interface EmailLoginSubmit { } object RetrofitHelper { - private const val baseUrl = "https://api-demo.omnivore.app" - fun getInstance(): Retrofit { - return Retrofit.Builder().baseUrl(baseUrl) + return Retrofit.Builder().baseUrl(Constants.serverProdURL) .addConverterFactory(GsonConverterFactory.create()) .build() } diff --git a/android/Omnivore/build.gradle b/android/Omnivore/build.gradle index 8c51a74fc..a78e10a1b 100644 --- a/android/Omnivore/build.gradle +++ b/android/Omnivore/build.gradle @@ -3,6 +3,11 @@ buildscript { compose_version = '1.1.0-beta01' lifecycle_version = '2.5.1' } + + dependencies { + classpath "com.google.dagger:hilt-android-gradle-plugin:2.43.2" + } + }// Top-level build file where you can add configuration options common to all sub-projects/modules. plugins { id 'com.android.application' version '7.2.1' apply false @@ -13,3 +18,4 @@ plugins { task clean(type: Delete) { delete rootProject.buildDir } + From 70d4b3caad4edec3c0258a72529f197e538719bd Mon Sep 17 00:00:00 2001 From: Satindar Dhillon Date: Wed, 10 Aug 2022 18:13:39 -0700 Subject: [PATCH 06/28] login with email and save token to datastore --- android/Omnivore/app/build.gradle | 10 ++-- .../Omnivore/app/src/main/AndroidManifest.xml | 1 + .../java/app/omnivore/omnivore/AppModule.kt | 20 +++++++ .../java/app/omnivore/omnivore/Constants.kt | 6 +++ .../omnivore/omnivore/DatastoreRepository.kt | 52 +++++++++++++++++++ .../app/omnivore/omnivore/LoginViewModel.kt | 34 ++++++++---- .../app/omnivore/omnivore/MainActivity.kt | 18 ++++--- .../omnivore/omnivore/OmnivoreApplication.kt | 8 +++ android/Omnivore/build.gradle | 6 ++- .../gradle/wrapper/gradle-wrapper.properties | 4 +- 10 files changed, 133 insertions(+), 26 deletions(-) create mode 100644 android/Omnivore/app/src/main/java/app/omnivore/omnivore/AppModule.kt create mode 100644 android/Omnivore/app/src/main/java/app/omnivore/omnivore/DatastoreRepository.kt create mode 100644 android/Omnivore/app/src/main/java/app/omnivore/omnivore/OmnivoreApplication.kt diff --git a/android/Omnivore/app/build.gradle b/android/Omnivore/app/build.gradle index 4bb871bc5..6ff7a6a27 100644 --- a/android/Omnivore/app/build.gradle +++ b/android/Omnivore/app/build.gradle @@ -6,11 +6,11 @@ plugins { } android { - compileSdk 32 + compileSdk 33 defaultConfig { applicationId "app.omnivore.omnivore" - minSdk 21 + minSdk 23 targetSdk 32 versionCode 1 versionName "1.0" @@ -111,9 +111,7 @@ dependencies { // implementation "androidx.activity:activity-ktx:1.3.1" //Dagger - Hilt - implementation 'com.google.dagger:hilt-android:2.43.2' - kapt 'com.google.dagger:hilt-compiler:2.43.2' - - implementation 'androidx.hilt:hilt-lifecycle-viewmodel:1.0.0-alpha03' + implementation 'com.google.dagger:hilt-android:2.42' + kapt 'com.google.dagger:hilt-compiler:2.42' } diff --git a/android/Omnivore/app/src/main/AndroidManifest.xml b/android/Omnivore/app/src/main/AndroidManifest.xml index 3bf761e86..344d7f7aa 100644 --- a/android/Omnivore/app/src/main/AndroidManifest.xml +++ b/android/Omnivore/app/src/main/AndroidManifest.xml @@ -4,6 +4,7 @@ package="app.omnivore.omnivore"> by preferencesDataStore( + name = Constants.dataStoreName +) + +interface DatastoreRepository { + suspend fun putString(key: String, value: String) + suspend fun putInt(key: String, value: Int) + suspend fun getString(key: String): String? + suspend fun getInt(key: String): Int? +} + +class OmnivoreDatastore @Inject constructor( + private val context: Context +) : DatastoreRepository { + override suspend fun putString(key: String, value: String) { + val preferencesKey = stringPreferencesKey(key) + context.dataStore.edit { preferences -> + preferences[preferencesKey] = value + } + } + + override suspend fun putInt(key: String, value: Int) { + val preferencesKey = intPreferencesKey(key) + context.dataStore.edit { preferences -> + preferences[preferencesKey] = value + } + } + + override suspend fun getString(key: String): String? { + val preferencesKey = stringPreferencesKey(key) + val preferences = context.dataStore.data.first() + return preferences[preferencesKey] + } + + override suspend fun getInt(key: String): Int? { + val preferencesKey = intPreferencesKey(key) + val preferences = context.dataStore.data.first() + return preferences[preferencesKey] + } +} diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/LoginViewModel.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/LoginViewModel.kt index 2ee230390..5cccad43a 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/LoginViewModel.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/LoginViewModel.kt @@ -3,24 +3,40 @@ package app.omnivore.omnivore import android.content.ContentValues import android.util.Log import androidx.lifecycle.ViewModel -import kotlinx.coroutines.GlobalScope +import androidx.lifecycle.viewModelScope +import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.launch +import javax.inject.Inject -class LoginViewModel: ViewModel() { +@HiltViewModel +class LoginViewModel @Inject constructor( + private val datastoreRepo: DatastoreRepository +): ViewModel() { fun login(email: String, password: String) { val emailLogin = RetrofitHelper.getInstance().create(EmailLoginSubmit::class.java) - GlobalScope.launch { + viewModelScope.launch { val result = emailLogin.submitEmailLogin( EmailLoginCredentials(email = email, password = password) ) - // TODO: parse out result and store auth token - // set some variable that compose can observe - if (result != null) { - Log.d(ContentValues.TAG, result.body().toString()) - } else { - Log.d(ContentValues.TAG, result.body().toString()) + // TODO: bail early if email is pending +// if (result.body()?.pendingEmailVerification == true) { +// return void +// } + + if (result.body()?.authToken != null) { + datastoreRepo.putString(DatastoreKeys.omnivoreAuthToken, result.body()?.authToken!!) + } + + if (result.body()?.authCookieString != null) { + datastoreRepo.putString( + DatastoreKeys.omnivoreAuthCookieString, result.body()?.authCookieString!! + ) + } + + datastoreRepo.getString(DatastoreKeys.omnivoreAuthToken)?.let { + Log.d(ContentValues.TAG, it) } } } diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/MainActivity.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/MainActivity.kt index fa310f6ae..3b8804963 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/MainActivity.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/MainActivity.kt @@ -24,7 +24,9 @@ import androidx.compose.ui.unit.dp import app.omnivore.omnivore.ui.theme.OmnivoreTheme import androidx.compose.runtime.getValue import androidx.compose.runtime.setValue +import dagger.hilt.android.AndroidEntryPoint +@AndroidEntryPoint class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -43,7 +45,7 @@ class MainActivity : ComponentActivity() { } @Composable -fun LoginView(viewModel: LoginViewModel = LoginViewModel()) { +fun LoginView(viewModel: LoginViewModel) { var email by rememberSaveable { mutableStateOf("") } var password by rememberSaveable { mutableStateOf("") } @@ -125,10 +127,10 @@ fun LoginFields( // showBackground = true, // name = "Dark Mode" //) -@Preview(showBackground = true) -@Composable -fun DefaultPreview() { - OmnivoreTheme { - LoginView() - } -} +//@Preview(showBackground = true) +//@Composable +//fun DefaultPreview() { +// OmnivoreTheme { +// LoginView() +// } +//} diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/OmnivoreApplication.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/OmnivoreApplication.kt new file mode 100644 index 000000000..7e339793a --- /dev/null +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/OmnivoreApplication.kt @@ -0,0 +1,8 @@ +package app.omnivore.omnivore + +import android.app.Application +import dagger.hilt.android.HiltAndroidApp + +@HiltAndroidApp +class OmnivoreApplication: Application() { +} diff --git a/android/Omnivore/build.gradle b/android/Omnivore/build.gradle index a78e10a1b..07f495e2f 100644 --- a/android/Omnivore/build.gradle +++ b/android/Omnivore/build.gradle @@ -5,7 +5,8 @@ buildscript { } dependencies { - classpath "com.google.dagger:hilt-android-gradle-plugin:2.43.2" + classpath "com.google.dagger:hilt-android-gradle-plugin:2.42" + classpath "com.android.tools.build:gradle:7.2.1" } }// Top-level build file where you can add configuration options common to all sub-projects/modules. @@ -13,6 +14,9 @@ plugins { id 'com.android.application' version '7.2.1' apply false id 'com.android.library' version '7.2.1' apply false id 'org.jetbrains.kotlin.android' version '1.5.31' apply false +// id 'com.android.application' version '7.2.2' apply false +// id 'com.android.library' version '7.2.2' apply false +// id 'org.jetbrains.kotlin.android' version '1.7.20-Beta' apply false } task clean(type: Delete) { diff --git a/android/Omnivore/gradle/wrapper/gradle-wrapper.properties b/android/Omnivore/gradle/wrapper/gradle-wrapper.properties index 29d14b04b..5bf8d8081 100644 --- a/android/Omnivore/gradle/wrapper/gradle-wrapper.properties +++ b/android/Omnivore/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Tue Aug 02 13:19:15 PDT 2022 +#Wed Aug 10 17:39:47 PDT 2022 distributionBase=GRADLE_USER_HOME -distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip distributionPath=wrapper/dists zipStorePath=wrapper/dists zipStoreBase=GRADLE_USER_HOME From 6c859430deb46102096b967dd9a3f693c7d947f0 Mon Sep 17 00:00:00 2001 From: Satindar Dhillon Date: Thu, 11 Aug 2022 23:29:30 -0700 Subject: [PATCH 07/28] add save activity to handle saves from android browser --- .../Omnivore/app/src/main/AndroidManifest.xml | 25 +++++++++-- .../java/app/omnivore/omnivore/AppModule.kt | 1 + .../app/omnivore/omnivore/LoginViewModel.kt | 2 +- .../app/omnivore/omnivore/SaveActivity.kt | 42 +++++++++++++++++++ 4 files changed, 66 insertions(+), 4 deletions(-) create mode 100644 android/Omnivore/app/src/main/java/app/omnivore/omnivore/SaveActivity.kt diff --git a/android/Omnivore/app/src/main/AndroidManifest.xml b/android/Omnivore/app/src/main/AndroidManifest.xml index 344d7f7aa..b067f10f0 100644 --- a/android/Omnivore/app/src/main/AndroidManifest.xml +++ b/android/Omnivore/app/src/main/AndroidManifest.xml @@ -3,6 +3,8 @@ xmlns:tools="http://schemas.android.com/tools" package="app.omnivore.omnivore"> + + - - - + + + + + + + + + + + + + + + + + + diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/AppModule.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/AppModule.kt index d83a52589..c48739f95 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/AppModule.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/AppModule.kt @@ -11,6 +11,7 @@ import javax.inject.Singleton @Module @InstallIn(SingletonComponent::class) object AppModule { + @Singleton @Provides fun provideDataStoreRepository( diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/LoginViewModel.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/LoginViewModel.kt index 5cccad43a..be10d9920 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/LoginViewModel.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/LoginViewModel.kt @@ -34,7 +34,7 @@ class LoginViewModel @Inject constructor( DatastoreKeys.omnivoreAuthCookieString, result.body()?.authCookieString!! ) } - + datastoreRepo.getString(DatastoreKeys.omnivoreAuthToken)?.let { Log.d(ContentValues.TAG, it) } diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/SaveActivity.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/SaveActivity.kt new file mode 100644 index 000000000..3222d15d5 --- /dev/null +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/SaveActivity.kt @@ -0,0 +1,42 @@ +package app.omnivore.omnivore + +import android.content.Intent +import android.os.Bundle +import androidx.activity.ComponentActivity +import androidx.activity.compose.setContent +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.material.MaterialTheme +import androidx.compose.material.Surface +import androidx.compose.material.Text +import androidx.compose.ui.Modifier +import app.omnivore.omnivore.ui.theme.OmnivoreTheme + +class SaveActivity : ComponentActivity() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + var text: String? = null + + when (intent?.action) { + Intent.ACTION_SEND -> { + if (intent.type?.startsWith("text/") == true) { + intent.getStringExtra(Intent.EXTRA_TEXT)?.let { + text = it + } + } + } + else -> { + // Handle other intents, such as being started from the home screen + } + } + + setContent { + OmnivoreTheme { + // A surface container using the 'background' color from the theme + Surface(modifier = Modifier.fillMaxSize(), color = MaterialTheme.colors.background) { + Text(text = text ?: "no text extracted") + } + } + } + } +} From aedfc33f5f0b92693463c8398748cad4150b35ac Mon Sep 17 00:00:00 2001 From: Satindar Dhillon Date: Fri, 12 Aug 2022 06:57:34 -0700 Subject: [PATCH 08/28] access auth token in save activity --- .../omnivore/omnivore/DatastoreRepository.kt | 2 ++ .../app/omnivore/omnivore/LoginViewModel.kt | 1 + .../app/omnivore/omnivore/MainActivity.kt | 1 - .../app/omnivore/omnivore/SaveActivity.kt | 35 +++++++++++++++---- .../app/omnivore/omnivore/SaveViewModel.kt | 15 ++++++++ 5 files changed, 47 insertions(+), 7 deletions(-) create mode 100644 android/Omnivore/app/src/main/java/app/omnivore/omnivore/SaveViewModel.kt diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/DatastoreRepository.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/DatastoreRepository.kt index 77fa5ec96..2638abb49 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/DatastoreRepository.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/DatastoreRepository.kt @@ -7,7 +7,9 @@ import androidx.datastore.preferences.core.edit import androidx.datastore.preferences.core.intPreferencesKey import androidx.datastore.preferences.core.stringPreferencesKey import androidx.datastore.preferences.preferencesDataStore +import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.first +import kotlinx.coroutines.flow.map import javax.inject.Inject private val Context.dataStore: DataStore by preferencesDataStore( diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/LoginViewModel.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/LoginViewModel.kt index be10d9920..3496034c6 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/LoginViewModel.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/LoginViewModel.kt @@ -2,6 +2,7 @@ package app.omnivore.omnivore import android.content.ContentValues import android.util.Log +import androidx.activity.viewModels import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/MainActivity.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/MainActivity.kt index 3b8804963..1502200ff 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/MainActivity.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/MainActivity.kt @@ -19,7 +19,6 @@ import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalFocusManager import androidx.compose.ui.text.input.ImeAction import androidx.compose.ui.text.input.PasswordVisualTransformation -import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import app.omnivore.omnivore.ui.theme.OmnivoreTheme import androidx.compose.runtime.getValue diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/SaveActivity.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/SaveActivity.kt index 3222d15d5..a1f21cee5 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/SaveActivity.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/SaveActivity.kt @@ -4,24 +4,38 @@ import android.content.Intent import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent -import androidx.compose.foundation.layout.fillMaxSize +import androidx.activity.viewModels +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.* import androidx.compose.material.MaterialTheme import androidx.compose.material.Surface import androidx.compose.material.Text +import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp import app.omnivore.omnivore.ui.theme.OmnivoreTheme +import dagger.hilt.android.AndroidEntryPoint +@AndroidEntryPoint class SaveActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - var text: String? = null + val viewModel: SaveViewModel by viewModels() + var extractedText: String? = null + val authToken = viewModel.getAuthToken() when (intent?.action) { Intent.ACTION_SEND -> { - if (intent.type?.startsWith("text/") == true) { + if (intent.type?.startsWith("text/plain") == true) { intent.getStringExtra(Intent.EXTRA_TEXT)?.let { - text = it + extractedText = it + } + } + + if (intent.type?.startsWith("text/html") == true) { + intent.getStringExtra(Intent.EXTRA_HTML_TEXT)?.let { + extractedText = it } } } @@ -32,9 +46,18 @@ class SaveActivity : ComponentActivity() { setContent { OmnivoreTheme { - // A surface container using the 'background' color from the theme Surface(modifier = Modifier.fillMaxSize(), color = MaterialTheme.colors.background) { - Text(text = text ?: "no text extracted") + Column( + verticalArrangement = Arrangement.Center, + horizontalAlignment = Alignment.CenterHorizontally, + modifier = Modifier + .background(MaterialTheme.colors.background) + .fillMaxSize() + ) { + Text(text = extractedText ?: "no text extracted") + Spacer(modifier = Modifier.height(16.dp)) + Text(text = authToken ?: "no auth token") + } } } } diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/SaveViewModel.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/SaveViewModel.kt new file mode 100644 index 000000000..bf86668d6 --- /dev/null +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/SaveViewModel.kt @@ -0,0 +1,15 @@ +package app.omnivore.omnivore + +import androidx.lifecycle.ViewModel +import dagger.hilt.android.lifecycle.HiltViewModel +import kotlinx.coroutines.runBlocking +import javax.inject.Inject + +@HiltViewModel +class SaveViewModel @Inject constructor( + private val datastoreRepo: DatastoreRepository +): ViewModel() { + fun getAuthToken(): String? = runBlocking { + datastoreRepo.getString(DatastoreKeys.omnivoreAuthToken) + } +} From 81e78749ca597d6f69f44e3b812fa064a43a0158 Mon Sep 17 00:00:00 2001 From: Satindar Dhillon Date: Fri, 12 Aug 2022 15:19:20 -0700 Subject: [PATCH 09/28] remove extra imports --- .../src/main/java/app/omnivore/omnivore/DatastoreRepository.kt | 2 -- .../app/src/main/java/app/omnivore/omnivore/LoginViewModel.kt | 1 - 2 files changed, 3 deletions(-) diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/DatastoreRepository.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/DatastoreRepository.kt index 2638abb49..77fa5ec96 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/DatastoreRepository.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/DatastoreRepository.kt @@ -7,9 +7,7 @@ import androidx.datastore.preferences.core.edit import androidx.datastore.preferences.core.intPreferencesKey import androidx.datastore.preferences.core.stringPreferencesKey import androidx.datastore.preferences.preferencesDataStore -import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.first -import kotlinx.coroutines.flow.map import javax.inject.Inject private val Context.dataStore: DataStore by preferencesDataStore( diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/LoginViewModel.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/LoginViewModel.kt index 3496034c6..be10d9920 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/LoginViewModel.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/LoginViewModel.kt @@ -2,7 +2,6 @@ package app.omnivore.omnivore import android.content.ContentValues import android.util.Log -import androidx.activity.viewModels import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel From 4f16e9ef30c5577d41b30ddb8fd7cb598771dcd9 Mon Sep 17 00:00:00 2001 From: Satindar Dhillon Date: Sun, 14 Aug 2022 07:20:22 -0700 Subject: [PATCH 10/28] add apollo client and make saveURL request --- android/Omnivore/app/build.gradle | 6 + .../app/src/main/graphql/SaveUrl.graphql | 10 + .../app/src/main/graphql/schema.graphqls | 1929 +++++++++++++++++ .../java/app/omnivore/omnivore/Constants.kt | 2 +- .../app/omnivore/omnivore/RESTNetworker.kt | 2 +- .../app/omnivore/omnivore/SaveActivity.kt | 1 + .../app/omnivore/omnivore/SaveViewModel.kt | 32 + 7 files changed, 1980 insertions(+), 2 deletions(-) create mode 100644 android/Omnivore/app/src/main/graphql/SaveUrl.graphql create mode 100644 android/Omnivore/app/src/main/graphql/schema.graphqls diff --git a/android/Omnivore/app/build.gradle b/android/Omnivore/app/build.gradle index 6ff7a6a27..e63b5e4f5 100644 --- a/android/Omnivore/app/build.gradle +++ b/android/Omnivore/app/build.gradle @@ -3,6 +3,7 @@ plugins { id 'org.jetbrains.kotlin.android' id 'kotlin-kapt' id 'dagger.hilt.android.plugin' + id 'com.apollographql.apollo3' version '3.5.0' } android { @@ -113,5 +114,10 @@ dependencies { //Dagger - Hilt implementation 'com.google.dagger:hilt-android:2.42' kapt 'com.google.dagger:hilt-compiler:2.42' + + implementation 'com.apollographql.apollo3:apollo-runtime:3.5.0' } +apollo { + packageName.set 'app.omnivore.omnivore.graphql.generated' +} diff --git a/android/Omnivore/app/src/main/graphql/SaveUrl.graphql b/android/Omnivore/app/src/main/graphql/SaveUrl.graphql new file mode 100644 index 000000000..c2a2d2428 --- /dev/null +++ b/android/Omnivore/app/src/main/graphql/SaveUrl.graphql @@ -0,0 +1,10 @@ +mutation SaveUrl ($input: SaveUrlInput!) { + saveUrl(input:$input){ + ... on SaveSuccess { + url + } + ... on SaveError { + errorCodes + } + } +} \ No newline at end of file diff --git a/android/Omnivore/app/src/main/graphql/schema.graphqls b/android/Omnivore/app/src/main/graphql/schema.graphqls new file mode 100644 index 000000000..a0d0e1161 --- /dev/null +++ b/android/Omnivore/app/src/main/graphql/schema.graphqls @@ -0,0 +1,1929 @@ +directive @sanitize(allowedTags: [String], maxLength: Int, pattern: String) on INPUT_FIELD_DEFINITION + +type AddPopularReadError { + errorCodes: [AddPopularReadErrorCode!]! +} + +enum AddPopularReadErrorCode { + BAD_REQUEST + NOT_FOUND + UNAUTHORIZED +} + +union AddPopularReadResult = AddPopularReadError | AddPopularReadSuccess + +type AddPopularReadSuccess { + pageId: String! +} + +type ApiKey { + createdAt: Date! + expiresAt: Date! + id: ID! + key: String + name: String! + scopes: [String!] + usedAt: Date +} + +type ApiKeysError { + errorCodes: [ApiKeysErrorCode!]! +} + +enum ApiKeysErrorCode { + BAD_REQUEST + UNAUTHORIZED +} + +union ApiKeysResult = ApiKeysError | ApiKeysSuccess + +type ApiKeysSuccess { + apiKeys: [ApiKey!]! +} + +type ArchiveLinkError { + errorCodes: [ArchiveLinkErrorCode!]! + message: String! +} + +enum ArchiveLinkErrorCode { + BAD_REQUEST + UNAUTHORIZED +} + +input ArchiveLinkInput { + archived: Boolean! + linkId: ID! +} + +union ArchiveLinkResult = ArchiveLinkError | ArchiveLinkSuccess + +type ArchiveLinkSuccess { + linkId: String! + message: String! +} + +type Article { + author: String + content: String! + contentReader: ContentReader! + createdAt: Date! + description: String + hasContent: Boolean + hash: String! + highlights(input: ArticleHighlightsInput): [Highlight!]! + id: ID! + image: String + isArchived: Boolean! + labels: [Label!] + language: String + linkId: ID + originalArticleUrl: String + originalHtml: String + pageType: PageType + postedByViewer: Boolean + publishedAt: Date + readAt: Date + readingProgressAnchorIndex: Int! + readingProgressPercent: Float! + savedAt: Date! + savedByViewer: Boolean + shareInfo: LinkShareInfo + sharedComment: String + siteIcon: String + siteName: String + slug: String! + state: ArticleSavingRequestStatus + subscription: String + title: String! + unsubHttpUrl: String + unsubMailTo: String + updatedAt: Date! + uploadFileId: ID + url: String! +} + +type ArticleEdge { + cursor: String! + node: Article! +} + +type ArticleError { + errorCodes: [ArticleErrorCode!]! +} + +enum ArticleErrorCode { + BAD_DATA + NOT_FOUND + UNAUTHORIZED +} + +input ArticleHighlightsInput { + includeFriends: Boolean +} + +union ArticleResult = ArticleError | ArticleSuccess + +type ArticleSavingRequest { + article: Article @deprecated(reason: "article has been replaced with slug") + createdAt: Date! + errorCode: CreateArticleErrorCode + id: ID! + slug: String! + status: ArticleSavingRequestStatus! + updatedAt: Date! + user: User! + userId: ID! @deprecated(reason: "userId has been replaced with user") +} + +type ArticleSavingRequestError { + errorCodes: [ArticleSavingRequestErrorCode!]! +} + +enum ArticleSavingRequestErrorCode { + NOT_FOUND + UNAUTHORIZED +} + +union ArticleSavingRequestResult = ArticleSavingRequestError | ArticleSavingRequestSuccess + +enum ArticleSavingRequestStatus { + DELETED + FAILED + PROCESSING + SUCCEEDED +} + +type ArticleSavingRequestSuccess { + articleSavingRequest: ArticleSavingRequest! +} + +type ArticleSuccess { + article: Article! +} + +type ArticlesError { + errorCodes: [ArticlesErrorCode!]! +} + +enum ArticlesErrorCode { + UNAUTHORIZED +} + +union ArticlesResult = ArticlesError | ArticlesSuccess + +type ArticlesSuccess { + edges: [ArticleEdge!]! + pageInfo: PageInfo! +} + +enum ContentReader { + PDF + WEB +} + +type CreateArticleError { + errorCodes: [CreateArticleErrorCode!]! +} + +enum CreateArticleErrorCode { + ELASTIC_ERROR + NOT_ALLOWED_TO_PARSE + PAYLOAD_TOO_LARGE + UNABLE_TO_FETCH + UNABLE_TO_PARSE + UNAUTHORIZED + UPLOAD_FILE_MISSING +} + +input CreateArticleInput { + articleSavingRequestId: ID + preparedDocument: PreparedDocumentInput + skipParsing: Boolean + source: String + uploadFileId: ID + url: String! +} + +union CreateArticleResult = CreateArticleError | CreateArticleSuccess + +type CreateArticleSavingRequestError { + errorCodes: [CreateArticleSavingRequestErrorCode!]! +} + +enum CreateArticleSavingRequestErrorCode { + BAD_DATA + UNAUTHORIZED +} + +input CreateArticleSavingRequestInput { + url: String! +} + +union CreateArticleSavingRequestResult = CreateArticleSavingRequestError | CreateArticleSavingRequestSuccess + +type CreateArticleSavingRequestSuccess { + articleSavingRequest: ArticleSavingRequest! +} + +type CreateArticleSuccess { + created: Boolean! + createdArticle: Article! + user: User! +} + +type CreateHighlightError { + errorCodes: [CreateHighlightErrorCode!]! +} + +enum CreateHighlightErrorCode { + ALREADY_EXISTS + BAD_DATA + FORBIDDEN + NOT_FOUND + UNAUTHORIZED +} + +input CreateHighlightInput { + annotation: String + articleId: ID! + id: ID! + patch: String! + prefix: String + quote: String! + sharedAt: Date + shortId: String! + suffix: String +} + +type CreateHighlightReplyError { + errorCodes: [CreateHighlightReplyErrorCode!]! +} + +enum CreateHighlightReplyErrorCode { + EMPTY_ANNOTATION + FORBIDDEN + NOT_FOUND + UNAUTHORIZED +} + +input CreateHighlightReplyInput { + highlightId: ID! + text: String! +} + +union CreateHighlightReplyResult = CreateHighlightReplyError | CreateHighlightReplySuccess + +type CreateHighlightReplySuccess { + highlightReply: HighlightReply! +} + +union CreateHighlightResult = CreateHighlightError | CreateHighlightSuccess + +type CreateHighlightSuccess { + highlight: Highlight! +} + +type CreateLabelError { + errorCodes: [CreateLabelErrorCode!]! +} + +enum CreateLabelErrorCode { + BAD_REQUEST + LABEL_ALREADY_EXISTS + NOT_FOUND + UNAUTHORIZED +} + +input CreateLabelInput { + color: String! + description: String + name: String! +} + +union CreateLabelResult = CreateLabelError | CreateLabelSuccess + +type CreateLabelSuccess { + label: Label! +} + +type CreateNewsletterEmailError { + errorCodes: [CreateNewsletterEmailErrorCode!]! +} + +enum CreateNewsletterEmailErrorCode { + BAD_REQUEST + UNAUTHORIZED +} + +union CreateNewsletterEmailResult = CreateNewsletterEmailError | CreateNewsletterEmailSuccess + +type CreateNewsletterEmailSuccess { + newsletterEmail: NewsletterEmail! +} + +type CreateReactionError { + errorCodes: [CreateReactionErrorCode!]! +} + +enum CreateReactionErrorCode { + BAD_CODE + BAD_TARGET + FORBIDDEN + NOT_FOUND + UNAUTHORIZED +} + +input CreateReactionInput { + code: ReactionType! + highlightId: ID + userArticleId: ID +} + +union CreateReactionResult = CreateReactionError | CreateReactionSuccess + +type CreateReactionSuccess { + reaction: Reaction! +} + +type CreateReminderError { + errorCodes: [CreateReminderErrorCode!]! +} + +enum CreateReminderErrorCode { + BAD_REQUEST + NOT_FOUND + UNAUTHORIZED +} + +input CreateReminderInput { + archiveUntil: Boolean! + clientRequestId: ID + linkId: ID + remindAt: Date! + sendNotification: Boolean! +} + +union CreateReminderResult = CreateReminderError | CreateReminderSuccess + +type CreateReminderSuccess { + reminder: Reminder! +} + +scalar Date + +type DeleteAccountError { + errorCodes: [DeleteAccountErrorCode!]! +} + +enum DeleteAccountErrorCode { + FORBIDDEN + UNAUTHORIZED + USER_NOT_FOUND +} + +union DeleteAccountResult = DeleteAccountError | DeleteAccountSuccess + +type DeleteAccountSuccess { + userID: ID! +} + +type DeleteHighlightError { + errorCodes: [DeleteHighlightErrorCode!]! +} + +enum DeleteHighlightErrorCode { + FORBIDDEN + NOT_FOUND + UNAUTHORIZED +} + +type DeleteHighlightReplyError { + errorCodes: [DeleteHighlightReplyErrorCode!]! +} + +enum DeleteHighlightReplyErrorCode { + FORBIDDEN + NOT_FOUND + UNAUTHORIZED +} + +union DeleteHighlightReplyResult = DeleteHighlightReplyError | DeleteHighlightReplySuccess + +type DeleteHighlightReplySuccess { + highlightReply: HighlightReply! +} + +union DeleteHighlightResult = DeleteHighlightError | DeleteHighlightSuccess + +type DeleteHighlightSuccess { + highlight: Highlight! +} + +type DeleteIntegrationError { + errorCodes: [DeleteIntegrationErrorCode!]! +} + +enum DeleteIntegrationErrorCode { + BAD_REQUEST + NOT_FOUND + UNAUTHORIZED +} + +union DeleteIntegrationResult = DeleteIntegrationError | DeleteIntegrationSuccess + +type DeleteIntegrationSuccess { + integration: Integration! +} + +type DeleteLabelError { + errorCodes: [DeleteLabelErrorCode!]! +} + +enum DeleteLabelErrorCode { + BAD_REQUEST + NOT_FOUND + UNAUTHORIZED +} + +union DeleteLabelResult = DeleteLabelError | DeleteLabelSuccess + +type DeleteLabelSuccess { + label: Label! +} + +type DeleteNewsletterEmailError { + errorCodes: [DeleteNewsletterEmailErrorCode!]! +} + +enum DeleteNewsletterEmailErrorCode { + BAD_REQUEST + NOT_FOUND + UNAUTHORIZED +} + +union DeleteNewsletterEmailResult = DeleteNewsletterEmailError | DeleteNewsletterEmailSuccess + +type DeleteNewsletterEmailSuccess { + newsletterEmail: NewsletterEmail! +} + +type DeleteReactionError { + errorCodes: [DeleteReactionErrorCode!]! +} + +enum DeleteReactionErrorCode { + FORBIDDEN + NOT_FOUND + UNAUTHORIZED +} + +union DeleteReactionResult = DeleteReactionError | DeleteReactionSuccess + +type DeleteReactionSuccess { + reaction: Reaction! +} + +type DeleteReminderError { + errorCodes: [DeleteReminderErrorCode!]! +} + +enum DeleteReminderErrorCode { + BAD_REQUEST + NOT_FOUND + UNAUTHORIZED +} + +union DeleteReminderResult = DeleteReminderError | DeleteReminderSuccess + +type DeleteReminderSuccess { + reminder: Reminder! +} + +type DeleteWebhookError { + errorCodes: [DeleteWebhookErrorCode!]! +} + +enum DeleteWebhookErrorCode { + BAD_REQUEST + NOT_FOUND + UNAUTHORIZED +} + +union DeleteWebhookResult = DeleteWebhookError | DeleteWebhookSuccess + +type DeleteWebhookSuccess { + webhook: Webhook! +} + +type DeviceToken { + createdAt: Date! + id: ID! + token: String! +} + +type FeedArticle { + annotationsCount: Int + article: Article! + highlight: Highlight + highlightsCount: Int + id: ID! + reactions: [Reaction!]! + sharedAt: Date! + sharedBy: User! + sharedComment: String + sharedWithHighlights: Boolean +} + +type FeedArticleEdge { + cursor: String! + node: FeedArticle! +} + +type FeedArticlesError { + errorCodes: [FeedArticlesErrorCode!]! +} + +enum FeedArticlesErrorCode { + UNAUTHORIZED +} + +union FeedArticlesResult = FeedArticlesError | FeedArticlesSuccess + +type FeedArticlesSuccess { + edges: [FeedArticleEdge!]! + pageInfo: PageInfo! +} + +type GenerateApiKeyError { + errorCodes: [GenerateApiKeyErrorCode!]! +} + +enum GenerateApiKeyErrorCode { + ALREADY_EXISTS + BAD_REQUEST + UNAUTHORIZED +} + +input GenerateApiKeyInput { + expiresAt: Date! + name: String! + scopes: [String!] +} + +union GenerateApiKeyResult = GenerateApiKeyError | GenerateApiKeySuccess + +type GenerateApiKeySuccess { + apiKey: ApiKey! +} + +type GetFollowersError { + errorCodes: [GetFollowersErrorCode!]! +} + +enum GetFollowersErrorCode { + UNAUTHORIZED +} + +union GetFollowersResult = GetFollowersError | GetFollowersSuccess + +type GetFollowersSuccess { + followers: [User!]! +} + +type GetFollowingError { + errorCodes: [GetFollowingErrorCode!]! +} + +enum GetFollowingErrorCode { + UNAUTHORIZED +} + +union GetFollowingResult = GetFollowingError | GetFollowingSuccess + +type GetFollowingSuccess { + following: [User!]! +} + +type GetUserPersonalizationError { + errorCodes: [GetUserPersonalizationErrorCode!]! +} + +enum GetUserPersonalizationErrorCode { + UNAUTHORIZED +} + +union GetUserPersonalizationResult = GetUserPersonalizationError | GetUserPersonalizationSuccess + +type GetUserPersonalizationSuccess { + userPersonalization: UserPersonalization +} + +input GoogleLoginInput { + email: String! + secret: String! +} + +type GoogleSignupError { + errorCodes: [SignupErrorCode]! +} + +input GoogleSignupInput { + bio: String + email: String! + name: String! + pictureUrl: String! + secret: String! + sourceUserId: String! + username: String! +} + +union GoogleSignupResult = GoogleSignupError | GoogleSignupSuccess + +type GoogleSignupSuccess { + me: User! +} + +type Highlight { + annotation: String + createdAt: Date! + createdByMe: Boolean! + id: ID! + patch: String! + prefix: String + quote: String! + reactions: [Reaction!]! + replies: [HighlightReply!]! + sharedAt: Date + shortId: String! + suffix: String + updatedAt: Date! + user: User! +} + +type HighlightReply { + createdAt: Date! + highlight: Highlight! + id: ID! + text: String! + updatedAt: Date! + user: User! +} + +type HighlightStats { + highlightCount: Int! +} + +type Integration { + createdAt: Date! + enabled: Boolean! + id: ID! + token: String! + type: IntegrationType! + updatedAt: Date! +} + +enum IntegrationType { + READWISE +} + +type IntegrationsError { + errorCodes: [IntegrationsErrorCode!]! +} + +enum IntegrationsErrorCode { + BAD_REQUEST + UNAUTHORIZED +} + +union IntegrationsResult = IntegrationsError | IntegrationsSuccess + +type IntegrationsSuccess { + integrations: [Integration!]! +} + +type Label { + color: String! + createdAt: Date + description: String + id: ID! + name: String! + position: Int +} + +type LabelsError { + errorCodes: [LabelsErrorCode!]! +} + +enum LabelsErrorCode { + BAD_REQUEST + NOT_FOUND + UNAUTHORIZED +} + +union LabelsResult = LabelsError | LabelsSuccess + +type LabelsSuccess { + labels: [Label!]! +} + +type Link { + highlightStats: HighlightStats! + id: ID! + page: Page! + postedByViewer: Boolean! + readState: ReadState! + savedAt: Date! + savedBy: User! + savedByViewer: Boolean! + shareInfo: LinkShareInfo! + shareStats: ShareStats! + slug: String! + updatedAt: Date! + url: String! +} + +type LinkShareInfo { + description: String! + imageUrl: String! + title: String! +} + +type LogOutError { + errorCodes: [LogOutErrorCode!]! +} + +enum LogOutErrorCode { + LOG_OUT_FAILED +} + +union LogOutResult = LogOutError | LogOutSuccess + +type LogOutSuccess { + message: String +} + +type LoginError { + errorCodes: [LoginErrorCode!]! +} + +enum LoginErrorCode { + ACCESS_DENIED + AUTH_FAILED + INVALID_CREDENTIALS + USER_ALREADY_EXISTS + USER_NOT_FOUND + WRONG_SOURCE +} + +union LoginResult = LoginError | LoginSuccess + +type LoginSuccess { + me: User! +} + +type MergeHighlightError { + errorCodes: [MergeHighlightErrorCode!]! +} + +enum MergeHighlightErrorCode { + ALREADY_EXISTS + BAD_DATA + FORBIDDEN + NOT_FOUND + UNAUTHORIZED +} + +input MergeHighlightInput { + annotation: String + articleId: ID! + id: ID! + overlapHighlightIdList: [String!]! + patch: String! + prefix: String + quote: String! + shortId: ID! + suffix: String +} + +union MergeHighlightResult = MergeHighlightError | MergeHighlightSuccess + +type MergeHighlightSuccess { + highlight: Highlight! + overlapHighlightIdList: [String!]! +} + +type MoveLabelError { + errorCodes: [MoveLabelErrorCode!]! +} + +enum MoveLabelErrorCode { + BAD_REQUEST + NOT_FOUND + UNAUTHORIZED +} + +input MoveLabelInput { + afterLabelId: ID + labelId: ID! +} + +union MoveLabelResult = MoveLabelError | MoveLabelSuccess + +type MoveLabelSuccess { + label: Label! +} + +type Mutation { + addPopularRead(name: String!): AddPopularReadResult! + createArticle(input: CreateArticleInput!): CreateArticleResult! + createArticleSavingRequest(input: CreateArticleSavingRequestInput!): CreateArticleSavingRequestResult! + createHighlight(input: CreateHighlightInput!): CreateHighlightResult! + createHighlightReply(input: CreateHighlightReplyInput!): CreateHighlightReplyResult! + createLabel(input: CreateLabelInput!): CreateLabelResult! + createNewsletterEmail: CreateNewsletterEmailResult! + createReaction(input: CreateReactionInput!): CreateReactionResult! + createReminder(input: CreateReminderInput!): CreateReminderResult! + deleteAccount(userID: ID!): DeleteAccountResult! + deleteHighlight(highlightId: ID!): DeleteHighlightResult! + deleteHighlightReply(highlightReplyId: ID!): DeleteHighlightReplyResult! + deleteIntegration(id: ID!): DeleteIntegrationResult! + deleteLabel(id: ID!): DeleteLabelResult! + deleteNewsletterEmail(newsletterEmailId: ID!): DeleteNewsletterEmailResult! + deleteReaction(id: ID!): DeleteReactionResult! + deleteReminder(id: ID!): DeleteReminderResult! + deleteWebhook(id: ID!): DeleteWebhookResult! + generateApiKey(input: GenerateApiKeyInput!): GenerateApiKeyResult! + googleLogin(input: GoogleLoginInput!): LoginResult! + googleSignup(input: GoogleSignupInput!): GoogleSignupResult! + logOut: LogOutResult! + mergeHighlight(input: MergeHighlightInput!): MergeHighlightResult! + moveLabel(input: MoveLabelInput!): MoveLabelResult! + reportItem(input: ReportItemInput!): ReportItemResult! + revokeApiKey(id: ID!): RevokeApiKeyResult! + saveArticleReadingProgress(input: SaveArticleReadingProgressInput!): SaveArticleReadingProgressResult! + saveFile(input: SaveFileInput!): SaveResult! + savePage(input: SavePageInput!): SaveResult! + saveUrl(input: SaveUrlInput!): SaveResult! + setBookmarkArticle(input: SetBookmarkArticleInput!): SetBookmarkArticleResult! + setDeviceToken(input: SetDeviceTokenInput!): SetDeviceTokenResult! + setFollow(input: SetFollowInput!): SetFollowResult! + setIntegration(input: SetIntegrationInput!): SetIntegrationResult! + setLabels(input: SetLabelsInput!): SetLabelsResult! + setLabelsForHighlight(input: SetLabelsForHighlightInput!): SetLabelsResult! + setLinkArchived(input: ArchiveLinkInput!): ArchiveLinkResult! + setShareArticle(input: SetShareArticleInput!): SetShareArticleResult! + setShareHighlight(input: SetShareHighlightInput!): SetShareHighlightResult! + setUserPersonalization(input: SetUserPersonalizationInput!): SetUserPersonalizationResult! + setWebhook(input: SetWebhookInput!): SetWebhookResult! + subscribe(name: String!): SubscribeResult! + unsubscribe(name: String!): UnsubscribeResult! + updateHighlight(input: UpdateHighlightInput!): UpdateHighlightResult! + updateHighlightReply(input: UpdateHighlightReplyInput!): UpdateHighlightReplyResult! + updateLabel(input: UpdateLabelInput!): UpdateLabelResult! + updateLinkShareInfo(input: UpdateLinkShareInfoInput!): UpdateLinkShareInfoResult! + updatePage(input: UpdatePageInput!): UpdatePageResult! + updateReminder(input: UpdateReminderInput!): UpdateReminderResult! + updateSharedComment(input: UpdateSharedCommentInput!): UpdateSharedCommentResult! + updateUser(input: UpdateUserInput!): UpdateUserResult! + updateUserProfile(input: UpdateUserProfileInput!): UpdateUserProfileResult! + uploadFileRequest(input: UploadFileRequestInput!): UploadFileRequestResult! +} + +type NewsletterEmail { + address: String! + confirmationCode: String + id: ID! +} + +type NewsletterEmailsError { + errorCodes: [NewsletterEmailsErrorCode!]! +} + +enum NewsletterEmailsErrorCode { + BAD_REQUEST + UNAUTHORIZED +} + +union NewsletterEmailsResult = NewsletterEmailsError | NewsletterEmailsSuccess + +type NewsletterEmailsSuccess { + newsletterEmails: [NewsletterEmail!]! +} + +type Page { + author: String + createdAt: Date! + description: String + hash: String! + id: ID! + image: String! + originalHtml: String! + originalUrl: String! + publishedAt: Date + readableHtml: String! + title: String! + type: PageType! + updatedAt: Date! + url: String! +} + +type PageInfo { + endCursor: String + hasNextPage: Boolean! + hasPreviousPage: Boolean! + startCursor: String + totalCount: Int +} + +input PageInfoInput { + author: String + canonicalUrl: String + contentType: String + description: String + previewImage: String + publishedAt: Date + title: String +} + +enum PageType { + ARTICLE + BOOK + FILE + HIGHLIGHTS + PROFILE + UNKNOWN + WEBSITE +} + +input PreparedDocumentInput { + document: String! + pageInfo: PageInfoInput! +} + +type Profile { + bio: String + id: ID! + pictureUrl: String + private: Boolean! + username: String! +} + +type Query { + apiKeys: ApiKeysResult! + article(slug: String!, username: String!): ArticleResult! + articleSavingRequest(id: ID!): ArticleSavingRequestResult! + articles(after: String, first: Int, includePending: Boolean, query: String, sharedOnly: Boolean, sort: SortParams): ArticlesResult! + feedArticles(after: String, first: Int, sharedByUser: ID, sort: SortParams): FeedArticlesResult! + getFollowers(userId: ID): GetFollowersResult! + getFollowing(userId: ID): GetFollowingResult! + getUserPersonalization: GetUserPersonalizationResult! + hello: String + integrations: IntegrationsResult! + labels: LabelsResult! + me: User + newsletterEmails: NewsletterEmailsResult! + reminder(linkId: ID!): ReminderResult! + search(after: String, first: Int, query: String): SearchResult! + sendInstallInstructions: SendInstallInstructionsResult! + sharedArticle(selectedHighlightId: String, slug: String!, username: String!): SharedArticleResult! + subscriptions(sort: SortParams): SubscriptionsResult! + typeaheadSearch(first: Int, query: String!): TypeaheadSearchResult! + updatesSince(after: String, first: Int, since: Date!): UpdatesSinceResult! + user(userId: ID, username: String): UserResult! + users: UsersResult! + validateUsername(username: String!): Boolean! + webhook(id: ID!): WebhookResult! + webhooks: WebhooksResult! +} + +type Reaction { + code: ReactionType! + createdAt: Date! + id: ID! + updatedAt: Date + user: User! +} + +enum ReactionType { + CRYING + HEART + HUSHED + LIKE + POUT + SMILE +} + +type ReadState { + progressAnchorIndex: Int! + progressPercent: Float! + reading: Boolean + readingTime: Int +} + +type Reminder { + archiveUntil: Boolean! + id: ID! + remindAt: Date! + sendNotification: Boolean! +} + +type ReminderError { + errorCodes: [ReminderErrorCode!]! +} + +enum ReminderErrorCode { + BAD_REQUEST + NOT_FOUND + UNAUTHORIZED +} + +union ReminderResult = ReminderError | ReminderSuccess + +type ReminderSuccess { + reminder: Reminder! +} + +input ReportItemInput { + itemUrl: String! + pageId: ID! + reportComment: String! + reportTypes: [ReportType!]! + sharedBy: ID +} + +type ReportItemResult { + message: String! +} + +enum ReportType { + ABUSIVE + CONTENT_DISPLAY + CONTENT_VIOLATION + SPAM +} + +type RevokeApiKeyError { + errorCodes: [RevokeApiKeyErrorCode!]! +} + +enum RevokeApiKeyErrorCode { + BAD_REQUEST + NOT_FOUND + UNAUTHORIZED +} + +union RevokeApiKeyResult = RevokeApiKeyError | RevokeApiKeySuccess + +type RevokeApiKeySuccess { + apiKey: ApiKey! +} + +type SaveArticleReadingProgressError { + errorCodes: [SaveArticleReadingProgressErrorCode!]! +} + +enum SaveArticleReadingProgressErrorCode { + BAD_DATA + NOT_FOUND + UNAUTHORIZED +} + +input SaveArticleReadingProgressInput { + id: ID! + readingProgressAnchorIndex: Int! + readingProgressPercent: Float! +} + +union SaveArticleReadingProgressResult = SaveArticleReadingProgressError | SaveArticleReadingProgressSuccess + +type SaveArticleReadingProgressSuccess { + updatedArticle: Article! +} + +type SaveError { + errorCodes: [SaveErrorCode!]! + message: String +} + +enum SaveErrorCode { + UNAUTHORIZED + UNKNOWN +} + +input SaveFileInput { + clientRequestId: ID! + source: String! + uploadFileId: ID! + url: String! +} + +input SavePageInput { + clientRequestId: ID! + originalContent: String! + source: String! + title: String + url: String! +} + +union SaveResult = SaveError | SaveSuccess + +type SaveSuccess { + clientRequestId: ID! + url: String! +} + +input SaveUrlInput { + clientRequestId: ID! + source: String! + url: String! +} + +type SearchError { + errorCodes: [SearchErrorCode!]! +} + +enum SearchErrorCode { + UNAUTHORIZED +} + +type SearchItem { + annotation: String + author: String + contentReader: ContentReader! + createdAt: Date! + description: String + highlights: [Highlight!] + id: ID! + image: String + isArchived: Boolean! + labels: [Label!] + language: String + originalArticleUrl: String + ownedByViewer: Boolean + pageId: ID + pageType: PageType! + publishedAt: Date + quote: String + readAt: Date + readingProgressAnchorIndex: Int! + readingProgressPercent: Float! + savedAt: Date! + shortId: String + siteName: String + slug: String! + state: ArticleSavingRequestStatus + subscription: String + title: String! + unsubHttpUrl: String + unsubMailTo: String + updatedAt: Date + uploadFileId: ID + url: String! +} + +type SearchItemEdge { + cursor: String! + node: SearchItem! +} + +union SearchResult = SearchError | SearchSuccess + +type SearchSuccess { + edges: [SearchItemEdge!]! + pageInfo: PageInfo! +} + +type SendInstallInstructionsError { + errorCodes: [SendInstallInstructionsErrorCode!]! +} + +enum SendInstallInstructionsErrorCode { + BAD_REQUEST + FORBIDDEN + NOT_FOUND + UNAUTHORIZED +} + +union SendInstallInstructionsResult = SendInstallInstructionsError | SendInstallInstructionsSuccess + +type SendInstallInstructionsSuccess { + sent: Boolean! +} + +type SetBookmarkArticleError { + errorCodes: [SetBookmarkArticleErrorCode!]! +} + +enum SetBookmarkArticleErrorCode { + BOOKMARK_EXISTS + NOT_FOUND +} + +input SetBookmarkArticleInput { + articleID: ID! + bookmark: Boolean! +} + +union SetBookmarkArticleResult = SetBookmarkArticleError | SetBookmarkArticleSuccess + +type SetBookmarkArticleSuccess { + bookmarkedArticle: Article! +} + +type SetDeviceTokenError { + errorCodes: [SetDeviceTokenErrorCode!]! +} + +enum SetDeviceTokenErrorCode { + BAD_REQUEST + NOT_FOUND + UNAUTHORIZED +} + +input SetDeviceTokenInput { + id: ID + token: String +} + +union SetDeviceTokenResult = SetDeviceTokenError | SetDeviceTokenSuccess + +type SetDeviceTokenSuccess { + deviceToken: DeviceToken! +} + +type SetFollowError { + errorCodes: [SetFollowErrorCode!]! +} + +enum SetFollowErrorCode { + NOT_FOUND + UNAUTHORIZED +} + +input SetFollowInput { + follow: Boolean! + userId: ID! +} + +union SetFollowResult = SetFollowError | SetFollowSuccess + +type SetFollowSuccess { + updatedUser: User! +} + +type SetIntegrationError { + errorCodes: [SetIntegrationErrorCode!]! +} + +enum SetIntegrationErrorCode { + ALREADY_EXISTS + BAD_REQUEST + INVALID_TOKEN + NOT_FOUND + UNAUTHORIZED +} + +input SetIntegrationInput { + enabled: Boolean! + id: ID + token: String! + type: IntegrationType! +} + +union SetIntegrationResult = SetIntegrationError | SetIntegrationSuccess + +type SetIntegrationSuccess { + integration: Integration! +} + +type SetLabelsError { + errorCodes: [SetLabelsErrorCode!]! +} + +enum SetLabelsErrorCode { + BAD_REQUEST + NOT_FOUND + UNAUTHORIZED +} + +input SetLabelsForHighlightInput { + highlightId: ID! + labelIds: [ID!]! +} + +input SetLabelsInput { + labelIds: [ID!]! + pageId: ID! +} + +union SetLabelsResult = SetLabelsError | SetLabelsSuccess + +type SetLabelsSuccess { + labels: [Label!]! +} + +type SetShareArticleError { + errorCodes: [SetShareArticleErrorCode!]! +} + +enum SetShareArticleErrorCode { + NOT_FOUND + UNAUTHORIZED +} + +input SetShareArticleInput { + articleID: ID! + share: Boolean! + sharedComment: String + sharedWithHighlights: Boolean +} + +union SetShareArticleResult = SetShareArticleError | SetShareArticleSuccess + +type SetShareArticleSuccess { + updatedArticle: Article! + updatedFeedArticle: FeedArticle + updatedFeedArticleId: String +} + +type SetShareHighlightError { + errorCodes: [SetShareHighlightErrorCode!]! +} + +enum SetShareHighlightErrorCode { + FORBIDDEN + NOT_FOUND + UNAUTHORIZED +} + +input SetShareHighlightInput { + id: ID! + share: Boolean! +} + +union SetShareHighlightResult = SetShareHighlightError | SetShareHighlightSuccess + +type SetShareHighlightSuccess { + highlight: Highlight! +} + +type SetUserPersonalizationError { + errorCodes: [SetUserPersonalizationErrorCode!]! +} + +enum SetUserPersonalizationErrorCode { + UNAUTHORIZED +} + +input SetUserPersonalizationInput { + fontFamily: String + fontSize: Int + libraryLayoutType: String + librarySortOrder: SortOrder + margin: Int + theme: String +} + +union SetUserPersonalizationResult = SetUserPersonalizationError | SetUserPersonalizationSuccess + +type SetUserPersonalizationSuccess { + updatedUserPersonalization: UserPersonalization! +} + +type SetWebhookError { + errorCodes: [SetWebhookErrorCode!]! +} + +enum SetWebhookErrorCode { + ALREADY_EXISTS + BAD_REQUEST + NOT_FOUND + UNAUTHORIZED +} + +input SetWebhookInput { + contentType: String + enabled: Boolean + eventTypes: [WebhookEvent!]! + id: ID + method: String + url: String! +} + +union SetWebhookResult = SetWebhookError | SetWebhookSuccess + +type SetWebhookSuccess { + webhook: Webhook! +} + +type ShareStats { + readDuration: Int! + saveCount: Int! + viewCount: Int! +} + +type SharedArticleError { + errorCodes: [SharedArticleErrorCode!]! +} + +enum SharedArticleErrorCode { + NOT_FOUND +} + +union SharedArticleResult = SharedArticleError | SharedArticleSuccess + +type SharedArticleSuccess { + article: Article! +} + +enum SignupErrorCode { + ACCESS_DENIED + EXPIRED_TOKEN + GOOGLE_AUTH_ERROR + INVALID_EMAIL + INVALID_PASSWORD + INVALID_USERNAME + UNKNOWN + USER_EXISTS +} + +enum SortBy { + PUBLISHED_AT + SAVED_AT + SCORE + UPDATED_TIME +} + +enum SortOrder { + ASCENDING + DESCENDING +} + +input SortParams { + by: SortBy! + order: SortOrder +} + +type SubscribeError { + errorCodes: [SubscribeErrorCode!]! +} + +enum SubscribeErrorCode { + ALREADY_SUBSCRIBED + BAD_REQUEST + NOT_FOUND + UNAUTHORIZED +} + +union SubscribeResult = SubscribeError | SubscribeSuccess + +type SubscribeSuccess { + subscriptions: [Subscription!]! +} + +type Subscription { + createdAt: Date! + description: String + id: ID! + name: String! + newsletterEmail: String! + status: SubscriptionStatus! + unsubscribeHttpUrl: String + unsubscribeMailTo: String + updatedAt: Date! + url: String +} + +enum SubscriptionStatus { + ACTIVE + DELETED + UNSUBSCRIBED +} + +type SubscriptionsError { + errorCodes: [SubscriptionsErrorCode!]! +} + +enum SubscriptionsErrorCode { + BAD_REQUEST + UNAUTHORIZED +} + +union SubscriptionsResult = SubscriptionsError | SubscriptionsSuccess + +type SubscriptionsSuccess { + subscriptions: [Subscription!]! +} + +type SyncUpdatedItemEdge { + cursor: String! + itemID: ID! + node: SearchItem + updateReason: UpdateReason! +} + +type TypeaheadSearchError { + errorCodes: [TypeaheadSearchErrorCode!]! +} + +enum TypeaheadSearchErrorCode { + UNAUTHORIZED +} + +type TypeaheadSearchItem { + id: ID! + siteName: String + slug: String! + title: String! +} + +union TypeaheadSearchResult = TypeaheadSearchError | TypeaheadSearchSuccess + +type TypeaheadSearchSuccess { + items: [TypeaheadSearchItem!]! +} + +type UnsubscribeError { + errorCodes: [UnsubscribeErrorCode!]! +} + +enum UnsubscribeErrorCode { + ALREADY_UNSUBSCRIBED + BAD_REQUEST + NOT_FOUND + UNAUTHORIZED + UNSUBSCRIBE_METHOD_NOT_FOUND +} + +union UnsubscribeResult = UnsubscribeError | UnsubscribeSuccess + +type UnsubscribeSuccess { + subscription: Subscription! +} + +type UpdateHighlightError { + errorCodes: [UpdateHighlightErrorCode!]! +} + +enum UpdateHighlightErrorCode { + BAD_DATA + FORBIDDEN + NOT_FOUND + UNAUTHORIZED +} + +input UpdateHighlightInput { + annotation: String + highlightId: ID! + sharedAt: Date +} + +type UpdateHighlightReplyError { + errorCodes: [UpdateHighlightReplyErrorCode!]! +} + +enum UpdateHighlightReplyErrorCode { + FORBIDDEN + NOT_FOUND + UNAUTHORIZED +} + +input UpdateHighlightReplyInput { + highlightReplyId: ID! + text: String! +} + +union UpdateHighlightReplyResult = UpdateHighlightReplyError | UpdateHighlightReplySuccess + +type UpdateHighlightReplySuccess { + highlightReply: HighlightReply! +} + +union UpdateHighlightResult = UpdateHighlightError | UpdateHighlightSuccess + +type UpdateHighlightSuccess { + highlight: Highlight! +} + +type UpdateLabelError { + errorCodes: [UpdateLabelErrorCode!]! +} + +enum UpdateLabelErrorCode { + BAD_REQUEST + FORBIDDEN + NOT_FOUND + UNAUTHORIZED +} + +input UpdateLabelInput { + color: String! + description: String + labelId: ID! + name: String! +} + +union UpdateLabelResult = UpdateLabelError | UpdateLabelSuccess + +type UpdateLabelSuccess { + label: Label! +} + +type UpdateLinkShareInfoError { + errorCodes: [UpdateLinkShareInfoErrorCode!]! +} + +enum UpdateLinkShareInfoErrorCode { + BAD_REQUEST + UNAUTHORIZED +} + +input UpdateLinkShareInfoInput { + description: String! + linkId: ID! + title: String! +} + +union UpdateLinkShareInfoResult = UpdateLinkShareInfoError | UpdateLinkShareInfoSuccess + +type UpdateLinkShareInfoSuccess { + message: String! +} + +type UpdatePageError { + errorCodes: [UpdatePageErrorCode!]! +} + +enum UpdatePageErrorCode { + BAD_REQUEST + FORBIDDEN + NOT_FOUND + UNAUTHORIZED + UPDATE_FAILED +} + +input UpdatePageInput { + description: String + pageId: ID! + title: String +} + +union UpdatePageResult = UpdatePageError | UpdatePageSuccess + +type UpdatePageSuccess { + updatedPage: Article! +} + +enum UpdateReason { + CREATED + DELETED + UPDATED +} + +type UpdateReminderError { + errorCodes: [UpdateReminderErrorCode!]! +} + +enum UpdateReminderErrorCode { + BAD_REQUEST + NOT_FOUND + UNAUTHORIZED +} + +input UpdateReminderInput { + archiveUntil: Boolean! + id: ID! + remindAt: Date! + sendNotification: Boolean! +} + +union UpdateReminderResult = UpdateReminderError | UpdateReminderSuccess + +type UpdateReminderSuccess { + reminder: Reminder! +} + +type UpdateSharedCommentError { + errorCodes: [UpdateSharedCommentErrorCode!]! +} + +enum UpdateSharedCommentErrorCode { + NOT_FOUND + UNAUTHORIZED +} + +input UpdateSharedCommentInput { + articleID: ID! + sharedComment: String! +} + +union UpdateSharedCommentResult = UpdateSharedCommentError | UpdateSharedCommentSuccess + +type UpdateSharedCommentSuccess { + articleID: ID! + sharedComment: String! +} + +type UpdateUserError { + errorCodes: [UpdateUserErrorCode!]! +} + +enum UpdateUserErrorCode { + BIO_TOO_LONG + EMPTY_NAME + UNAUTHORIZED + USER_NOT_FOUND +} + +input UpdateUserInput { + bio: String + name: String! +} + +type UpdateUserProfileError { + errorCodes: [UpdateUserProfileErrorCode!]! +} + +enum UpdateUserProfileErrorCode { + BAD_DATA + BAD_USERNAME + FORBIDDEN + UNAUTHORIZED + USERNAME_EXISTS +} + +input UpdateUserProfileInput { + bio: String + pictureUrl: String + userId: ID! + username: String +} + +union UpdateUserProfileResult = UpdateUserProfileError | UpdateUserProfileSuccess + +type UpdateUserProfileSuccess { + user: User! +} + +union UpdateUserResult = UpdateUserError | UpdateUserSuccess + +type UpdateUserSuccess { + user: User! +} + +type UpdatesSinceError { + errorCodes: [UpdatesSinceErrorCode!]! +} + +enum UpdatesSinceErrorCode { + UNAUTHORIZED +} + +union UpdatesSinceResult = UpdatesSinceError | UpdatesSinceSuccess + +type UpdatesSinceSuccess { + edges: [SyncUpdatedItemEdge!]! + pageInfo: PageInfo! +} + +type UploadFileRequestError { + errorCodes: [UploadFileRequestErrorCode!]! +} + +enum UploadFileRequestErrorCode { + BAD_INPUT + FAILED_CREATE + UNAUTHORIZED +} + +input UploadFileRequestInput { + clientRequestId: String + contentType: String! + createPageEntry: Boolean + url: String! +} + +union UploadFileRequestResult = UploadFileRequestError | UploadFileRequestSuccess + +type UploadFileRequestSuccess { + createdPageId: String + id: ID! + uploadFileId: ID + uploadSignedUrl: String +} + +enum UploadFileStatus { + COMPLETED + INITIALIZED +} + +type User { + followersCount: Int + friendsCount: Int + id: ID! + isFriend: Boolean @deprecated(reason: "isFriend has been replaced with viewerIsFollowing") + isFullUser: Boolean + name: String! + picture: String + profile: Profile! + sharedArticles: [FeedArticle!]! + sharedArticlesCount: Int + sharedHighlightsCount: Int + sharedNotesCount: Int + viewerIsFollowing: Boolean +} + +type UserError { + errorCodes: [UserErrorCode!]! +} + +enum UserErrorCode { + BAD_REQUEST + UNAUTHORIZED + USER_NOT_FOUND +} + +type UserPersonalization { + fontFamily: String + fontSize: Int + id: ID + libraryLayoutType: String + librarySortOrder: SortOrder + margin: Int + theme: String +} + +union UserResult = UserError | UserSuccess + +type UserSuccess { + user: User! +} + +type UsersError { + errorCodes: [UsersErrorCode!]! +} + +enum UsersErrorCode { + UNAUTHORIZED +} + +union UsersResult = UsersError | UsersSuccess + +type UsersSuccess { + users: [User!]! +} + +type Webhook { + contentType: String! + createdAt: Date! + enabled: Boolean! + eventTypes: [WebhookEvent!]! + id: ID! + method: String! + updatedAt: Date! + url: String! +} + +type WebhookError { + errorCodes: [WebhookErrorCode!]! +} + +enum WebhookErrorCode { + BAD_REQUEST + NOT_FOUND + UNAUTHORIZED +} + +enum WebhookEvent { + HIGHLIGHT_CREATED + HIGHLIGHT_DELETED + HIGHLIGHT_UPDATED + LABEL_CREATED + LABEL_DELETED + LABEL_UPDATED + PAGE_CREATED + PAGE_DELETED + PAGE_UPDATED +} + +union WebhookResult = WebhookError | WebhookSuccess + +type WebhookSuccess { + webhook: Webhook! +} + +type WebhooksError { + errorCodes: [WebhooksErrorCode!]! +} + +enum WebhooksErrorCode { + BAD_REQUEST + UNAUTHORIZED +} + +union WebhooksResult = WebhooksError | WebhooksSuccess + +type WebhooksSuccess { + webhooks: [Webhook!]! +} diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/Constants.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/Constants.kt index c967d7638..9ae6feaf6 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/Constants.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/Constants.kt @@ -1,7 +1,7 @@ package app.omnivore.omnivore object Constants { - const val serverProdURL = "https://api-demo.omnivore.app" + const val demoProdURL = "https://api-demo.omnivore.app" const val dataStoreName = "omnivore-datastore" } diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/RESTNetworker.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/RESTNetworker.kt index d9bbf1ed6..21c91fc8e 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/RESTNetworker.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/RESTNetworker.kt @@ -27,7 +27,7 @@ interface EmailLoginSubmit { object RetrofitHelper { fun getInstance(): Retrofit { - return Retrofit.Builder().baseUrl(Constants.serverProdURL) + return Retrofit.Builder().baseUrl(Constants.demoProdURL) .addConverterFactory(GsonConverterFactory.create()) .build() } diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/SaveActivity.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/SaveActivity.kt index a1f21cee5..4c3234fda 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/SaveActivity.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/SaveActivity.kt @@ -30,6 +30,7 @@ class SaveActivity : ComponentActivity() { if (intent.type?.startsWith("text/plain") == true) { intent.getStringExtra(Intent.EXTRA_TEXT)?.let { extractedText = it + viewModel.saveURL(it) } } diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/SaveViewModel.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/SaveViewModel.kt index bf86668d6..f17d4dd33 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/SaveViewModel.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/SaveViewModel.kt @@ -1,8 +1,16 @@ package app.omnivore.omnivore +import android.content.ContentValues +import android.util.Log import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import app.omnivore.omnivore.graphql.generated.SaveUrlMutation +import app.omnivore.omnivore.graphql.generated.type.SaveUrlInput +import com.apollographql.apollo3.ApolloClient import dagger.hilt.android.lifecycle.HiltViewModel +import kotlinx.coroutines.launch import kotlinx.coroutines.runBlocking +import java.util.* import javax.inject.Inject @HiltViewModel @@ -12,4 +20,28 @@ class SaveViewModel @Inject constructor( fun getAuthToken(): String? = runBlocking { datastoreRepo.getString(DatastoreKeys.omnivoreAuthToken) } + + fun saveURL(url: String) { + viewModelScope.launch { + val apiKey = getAuthToken() ?: "" + + val apolloClient = ApolloClient.Builder() + .serverUrl("${Constants.demoProdURL}/api/graphql") + .addHttpHeader("Authorization", value = apiKey) + .build() + + val response = apolloClient.mutation( + SaveUrlMutation( + SaveUrlInput( + clientRequestId = UUID.randomUUID().toString(), + source = "android", + url = url + ) + ) + ).execute() + + val success = (response.data?.saveUrl?.onSaveSuccess?.url != null) + Log.d(ContentValues.TAG, "Saved URL?: ${success.toString()}") + } + } } From 64f59c72473479c3431cbc1397dbb587fff205c6 Mon Sep 17 00:00:00 2001 From: Satindar Dhillon Date: Tue, 16 Aug 2022 15:38:30 -0700 Subject: [PATCH 11/28] WIP: trying out bottom sheet for share activity --- .../app/omnivore/omnivore/SaveActivity.kt | 96 ++++++++++++++++++- 1 file changed, 93 insertions(+), 3 deletions(-) diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/SaveActivity.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/SaveActivity.kt index 4c3234fda..5d22b6d11 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/SaveActivity.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/SaveActivity.kt @@ -7,14 +7,20 @@ import androidx.activity.compose.setContent import androidx.activity.viewModels import androidx.compose.foundation.background import androidx.compose.foundation.layout.* -import androidx.compose.material.MaterialTheme -import androidx.compose.material.Surface -import androidx.compose.material.Text +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.material.* +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Add +import androidx.compose.runtime.Composable +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import app.omnivore.omnivore.ui.theme.OmnivoreTheme import dagger.hilt.android.AndroidEntryPoint +import kotlinx.coroutines.launch @AndroidEntryPoint class SaveActivity : ComponentActivity() { @@ -47,6 +53,8 @@ class SaveActivity : ComponentActivity() { setContent { OmnivoreTheme { +//dialog() +// saveBottomModal() Surface(modifier = Modifier.fillMaxSize(), color = MaterialTheme.colors.background) { Column( verticalArrangement = Arrangement.Center, @@ -64,3 +72,85 @@ class SaveActivity : ComponentActivity() { } } } + +@Composable +fun dialog() { + AlertDialog( + onDismissRequest = { + // Dismiss the dialog when the user clicks outside the dialog or on the back + // button. If you want to disable that functionality, simply use an empty + // onCloseRequest. +// openDialog.value = false + }, + title = { + Text(text = "Dialog Title") + }, + text = { + Text("Here is a text ") + }, + confirmButton = { + Button( + onClick = { +// openDialog.value = false + }) { + Text("This is the Confirm Button") + } + }, + dismissButton = { + Button( + onClick = { +// openDialog.value = false + }) { + Text("This is the dismiss Button") + } + } + ) +} + +@OptIn(ExperimentalMaterialApi::class) +@Composable +fun saveBottomModal() { + val scaffoldState = rememberScaffoldState() + val modalBottomSheetState = rememberModalBottomSheetState(ModalBottomSheetValue.HalfExpanded) + val coroutineScope = rememberCoroutineScope() + + Scaffold( + scaffoldState = scaffoldState, + ) { innerPadding -> + Box(modifier = Modifier.padding(innerPadding)) { + Button(onClick = { + coroutineScope.launch { + modalBottomSheetState.show() + } + }) { + Text(text = "Show") + } + } + } + + ModalBottomSheetLayout( + sheetState = modalBottomSheetState, + sheetContent = { + LazyColumn { + item { + TextButton(modifier = Modifier.fillMaxWidth(), onClick = { + // do something + }) { + Row { + Icon( + imageVector = Icons.Filled.Add, + // painterResource(id = R.drawable.ic_baseline_add_24), + contentDescription = "New Album" + ) + Text("New Album") + Spacer(modifier = Modifier.weight(1f)) + } + } + } + } + } + ) { + // + } +} + From f7dfb21f4f56af6a81946c9624c7cc29fd226ef8 Mon Sep 17 00:00:00 2001 From: Satindar Dhillon Date: Tue, 16 Aug 2022 20:56:06 -0700 Subject: [PATCH 12/28] observe live data for auth token existence in root view --- android/Omnivore/app/build.gradle | 1 + .../omnivore/omnivore/DatastoreRepository.kt | 19 ++++++++++--- .../app/omnivore/omnivore/LoginViewModel.kt | 12 +++++++-- .../app/omnivore/omnivore/MainActivity.kt | 27 ++++++++++++++++++- 4 files changed, 52 insertions(+), 7 deletions(-) diff --git a/android/Omnivore/app/build.gradle b/android/Omnivore/app/build.gradle index e63b5e4f5..a8e4021ae 100644 --- a/android/Omnivore/app/build.gradle +++ b/android/Omnivore/app/build.gradle @@ -71,6 +71,7 @@ dependencies { implementation("androidx.lifecycle:lifecycle-viewmodel-compose:$lifecycle_version") // LiveData implementation("androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version") + implementation("androidx.compose.runtime:runtime-livedata:1.2.1") // Saved state module for ViewModel implementation("androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version") diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/DatastoreRepository.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/DatastoreRepository.kt index 77fa5ec96..9ed4c5221 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/DatastoreRepository.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/DatastoreRepository.kt @@ -2,12 +2,15 @@ package app.omnivore.omnivore import android.content.Context import androidx.datastore.core.DataStore -import androidx.datastore.preferences.core.Preferences -import androidx.datastore.preferences.core.edit -import androidx.datastore.preferences.core.intPreferencesKey -import androidx.datastore.preferences.core.stringPreferencesKey +import androidx.datastore.dataStore +import androidx.datastore.preferences.core.* import androidx.datastore.preferences.preferencesDataStore +import androidx.lifecycle.asLiveData +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.catch import kotlinx.coroutines.flow.first +import kotlinx.coroutines.flow.map +import java.io.IOException import javax.inject.Inject private val Context.dataStore: DataStore by preferencesDataStore( @@ -15,6 +18,7 @@ private val Context.dataStore: DataStore by preferencesDataStore( ) interface DatastoreRepository { + val hasAuthTokenFlow: Flow suspend fun putString(key: String, value: String) suspend fun putInt(key: String, value: Int) suspend fun getString(key: String): String? @@ -49,4 +53,11 @@ class OmnivoreDatastore @Inject constructor( val preferences = context.dataStore.data.first() return preferences[preferencesKey] } + + override val hasAuthTokenFlow: Flow = context + .dataStore.data.map { preferences -> + val key = stringPreferencesKey(DatastoreKeys.omnivoreAuthToken) + val token = preferences[key] + token != null + } } diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/LoginViewModel.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/LoginViewModel.kt index be10d9920..e11d89e0d 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/LoginViewModel.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/LoginViewModel.kt @@ -2,9 +2,12 @@ package app.omnivore.omnivore import android.content.ContentValues import android.util.Log -import androidx.lifecycle.ViewModel -import androidx.lifecycle.viewModelScope +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.setValue +import androidx.lifecycle.* import dagger.hilt.android.lifecycle.HiltViewModel +import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.launch import javax.inject.Inject @@ -12,6 +15,11 @@ import javax.inject.Inject class LoginViewModel @Inject constructor( private val datastoreRepo: DatastoreRepository ): ViewModel() { + val hasAuthTokenLiveData: LiveData = datastoreRepo + .hasAuthTokenFlow + .distinctUntilChanged() + .asLiveData() + fun login(email: String, password: String) { val emailLogin = RetrofitHelper.getInstance().create(EmailLoginSubmit::class.java) diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/MainActivity.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/MainActivity.kt index 1502200ff..db3278273 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/MainActivity.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/MainActivity.kt @@ -22,6 +22,7 @@ import androidx.compose.ui.text.input.PasswordVisualTransformation import androidx.compose.ui.unit.dp import app.omnivore.omnivore.ui.theme.OmnivoreTheme import androidx.compose.runtime.getValue +import androidx.compose.runtime.livedata.observeAsState import androidx.compose.runtime.setValue import dagger.hilt.android.AndroidEntryPoint @@ -36,13 +37,37 @@ class MainActivity : ComponentActivity() { OmnivoreTheme { // A surface container using the 'background' color from the theme Surface(modifier = Modifier.fillMaxSize(), color = MaterialTheme.colors.background) { - LoginView(viewModel) + rootView(viewModel) } } } } } +@Composable +fun rootView(viewModel: LoginViewModel) { + val hasAuthToken: Boolean by viewModel.hasAuthTokenLiveData.observeAsState(false) + + if (hasAuthToken) { + loggedInView() + } else { + LoginView(viewModel) + } +} + +@Composable +fun loggedInView() { + Column( + verticalArrangement = Arrangement.Center, + horizontalAlignment = Alignment.CenterHorizontally, + modifier = Modifier + .background(MaterialTheme.colors.background) + .fillMaxSize() + ) { + Text("You have a valid auth token. Nice. Go save something in Chrome!") + } +} + @Composable fun LoginView(viewModel: LoginViewModel) { var email by rememberSaveable { mutableStateOf("") } From 53cb16bd2afc3d5051c24a3fb21dfbc5b5fdff29 Mon Sep 17 00:00:00 2001 From: Satindar Dhillon Date: Tue, 16 Aug 2022 21:35:20 -0700 Subject: [PATCH 13/28] add a logout button that clears datastore when tapped --- .../app/omnivore/omnivore/DatastoreRepository.kt | 5 +++++ .../java/app/omnivore/omnivore/LoginViewModel.kt | 6 ++++++ .../java/app/omnivore/omnivore/MainActivity.kt | 14 ++++++++++---- 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/DatastoreRepository.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/DatastoreRepository.kt index 9ed4c5221..5b94ee716 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/DatastoreRepository.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/DatastoreRepository.kt @@ -19,6 +19,7 @@ private val Context.dataStore: DataStore by preferencesDataStore( interface DatastoreRepository { val hasAuthTokenFlow: Flow + suspend fun clear() suspend fun putString(key: String, value: String) suspend fun putInt(key: String, value: Int) suspend fun getString(key: String): String? @@ -54,6 +55,10 @@ class OmnivoreDatastore @Inject constructor( return preferences[preferencesKey] } + override suspend fun clear() { + context.dataStore.edit { it.clear() } + } + override val hasAuthTokenFlow: Flow = context .dataStore.data.map { preferences -> val key = stringPreferencesKey(DatastoreKeys.omnivoreAuthToken) diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/LoginViewModel.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/LoginViewModel.kt index e11d89e0d..48a624862 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/LoginViewModel.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/LoginViewModel.kt @@ -48,4 +48,10 @@ class LoginViewModel @Inject constructor( } } } + + fun logout() { + viewModelScope.launch { + datastoreRepo.clear() + } + } } diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/MainActivity.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/MainActivity.kt index db3278273..73d97853c 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/MainActivity.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/MainActivity.kt @@ -37,7 +37,7 @@ class MainActivity : ComponentActivity() { OmnivoreTheme { // A surface container using the 'background' color from the theme Surface(modifier = Modifier.fillMaxSize(), color = MaterialTheme.colors.background) { - rootView(viewModel) + RootView(viewModel) } } } @@ -45,18 +45,18 @@ class MainActivity : ComponentActivity() { } @Composable -fun rootView(viewModel: LoginViewModel) { +fun RootView(viewModel: LoginViewModel) { val hasAuthToken: Boolean by viewModel.hasAuthTokenLiveData.observeAsState(false) if (hasAuthToken) { - loggedInView() + LoggedInView(viewModel) } else { LoginView(viewModel) } } @Composable -fun loggedInView() { +fun LoggedInView(viewModel: LoginViewModel) { Column( verticalArrangement = Arrangement.Center, horizontalAlignment = Alignment.CenterHorizontally, @@ -65,6 +65,12 @@ fun loggedInView() { .fillMaxSize() ) { Text("You have a valid auth token. Nice. Go save something in Chrome!") + + Button(onClick = { + viewModel.logout() + }) { + Text(text = "Logout") + } } } From b2398efa585e82640ffbf096b49639251cc7cae7 Mon Sep 17 00:00:00 2001 From: Satindar Dhillon Date: Wed, 17 Aug 2022 08:22:53 -0700 Subject: [PATCH 14/28] upgrade gardle plugin --- android/Omnivore/build.gradle | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/android/Omnivore/build.gradle b/android/Omnivore/build.gradle index 07f495e2f..934275fa7 100644 --- a/android/Omnivore/build.gradle +++ b/android/Omnivore/build.gradle @@ -6,13 +6,13 @@ buildscript { dependencies { classpath "com.google.dagger:hilt-android-gradle-plugin:2.42" - classpath "com.android.tools.build:gradle:7.2.1" + classpath 'com.android.tools.build:gradle:7.2.2' } }// Top-level build file where you can add configuration options common to all sub-projects/modules. plugins { - id 'com.android.application' version '7.2.1' apply false - id 'com.android.library' version '7.2.1' apply false + id 'com.android.application' version '7.2.2' apply false + id 'com.android.library' version '7.2.2' apply false id 'org.jetbrains.kotlin.android' version '1.5.31' apply false // id 'com.android.application' version '7.2.2' apply false // id 'com.android.library' version '7.2.2' apply false From a99aafe6d8103b9e1808968227609c0c14fc5ed9 Mon Sep 17 00:00:00 2001 From: Satindar Dhillon Date: Wed, 17 Aug 2022 12:15:26 -0700 Subject: [PATCH 15/28] show snackbar when login submission returns an error --- .../omnivore/omnivore/DatastoreRepository.kt | 8 +-- .../app/omnivore/omnivore/LoginViewModel.kt | 29 +++++++--- .../app/omnivore/omnivore/MainActivity.kt | 53 ++++++++++++++++--- 3 files changed, 71 insertions(+), 19 deletions(-) diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/DatastoreRepository.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/DatastoreRepository.kt index 5b94ee716..ea22d4c38 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/DatastoreRepository.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/DatastoreRepository.kt @@ -13,10 +13,6 @@ import kotlinx.coroutines.flow.map import java.io.IOException import javax.inject.Inject -private val Context.dataStore: DataStore by preferencesDataStore( - name = Constants.dataStoreName -) - interface DatastoreRepository { val hasAuthTokenFlow: Flow suspend fun clear() @@ -29,6 +25,10 @@ interface DatastoreRepository { class OmnivoreDatastore @Inject constructor( private val context: Context ) : DatastoreRepository { + private val Context.dataStore: DataStore by preferencesDataStore( + name = Constants.dataStoreName + ) + override suspend fun putString(key: String, value: String) { val preferencesKey = stringPreferencesKey(key) context.dataStore.edit { preferences -> diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/LoginViewModel.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/LoginViewModel.kt index 48a624862..e9102680a 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/LoginViewModel.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/LoginViewModel.kt @@ -15,6 +15,12 @@ import javax.inject.Inject class LoginViewModel @Inject constructor( private val datastoreRepo: DatastoreRepository ): ViewModel() { + var isLoading by mutableStateOf(false) + private set + + var errorMessage by mutableStateOf(null) + private set + val hasAuthTokenLiveData: LiveData = datastoreRepo .hasAuthTokenFlow .distinctUntilChanged() @@ -24,17 +30,24 @@ class LoginViewModel @Inject constructor( val emailLogin = RetrofitHelper.getInstance().create(EmailLoginSubmit::class.java) viewModelScope.launch { + isLoading = true + errorMessage = null + val result = emailLogin.submitEmailLogin( EmailLoginCredentials(email = email, password = password) ) - // TODO: bail early if email is pending -// if (result.body()?.pendingEmailVerification == true) { -// return void -// } + isLoading = false + + if (result.body()?.pendingEmailVerification == true) { + errorMessage = "Email needs verification" + return@launch + } if (result.body()?.authToken != null) { datastoreRepo.putString(DatastoreKeys.omnivoreAuthToken, result.body()?.authToken!!) + } else { + errorMessage = "Something went wrong. Please check your email/password and try again" } if (result.body()?.authCookieString != null) { @@ -42,10 +55,6 @@ class LoginViewModel @Inject constructor( DatastoreKeys.omnivoreAuthCookieString, result.body()?.authCookieString!! ) } - - datastoreRepo.getString(DatastoreKeys.omnivoreAuthToken)?.let { - Log.d(ContentValues.TAG, it) - } } } @@ -54,4 +63,8 @@ class LoginViewModel @Inject constructor( datastoreRepo.clear() } } + + fun resetErrorMessage() { + errorMessage = null + } } diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/MainActivity.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/MainActivity.kt index 73d97853c..8d035d34b 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/MainActivity.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/MainActivity.kt @@ -1,17 +1,19 @@ package app.omnivore.omnivore +import android.annotation.SuppressLint import android.os.Bundle +import android.view.View import android.widget.Toast import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.activity.viewModels import androidx.compose.foundation.background +import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.* import androidx.compose.foundation.text.KeyboardActions import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.material.* -import androidx.compose.runtime.Composable -import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.* import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier @@ -21,10 +23,12 @@ import androidx.compose.ui.text.input.ImeAction import androidx.compose.ui.text.input.PasswordVisualTransformation import androidx.compose.ui.unit.dp import app.omnivore.omnivore.ui.theme.OmnivoreTheme -import androidx.compose.runtime.getValue import androidx.compose.runtime.livedata.observeAsState -import androidx.compose.runtime.setValue +import androidx.core.view.ViewCompat +import androidx.core.view.WindowCompat +import androidx.core.view.WindowInsetsCompat import dagger.hilt.android.AndroidEntryPoint +import kotlinx.coroutines.launch @AndroidEntryPoint class MainActivity : ComponentActivity() { @@ -37,15 +41,24 @@ class MainActivity : ComponentActivity() { OmnivoreTheme { // A surface container using the 'background' color from the theme Surface(modifier = Modifier.fillMaxSize(), color = MaterialTheme.colors.background) { - RootView(viewModel) + PrimaryView(viewModel) } } } + + // animate the view up when keyboard appears + WindowCompat.setDecorFitsSystemWindows(window, false) + val rootView = findViewById(android.R.id.content).rootView + ViewCompat.setOnApplyWindowInsetsListener(rootView) { _, insets -> + val imeHeight = insets.getInsets(WindowInsetsCompat.Type.ime()).bottom + rootView.setPadding(0, 0, 0, imeHeight) + insets + } } } @Composable -fun RootView(viewModel: LoginViewModel) { +fun PrimaryView(viewModel: LoginViewModel) { val hasAuthToken: Boolean by viewModel.hasAuthTokenLiveData.observeAsState(false) if (hasAuthToken) { @@ -74,10 +87,14 @@ fun LoggedInView(viewModel: LoginViewModel) { } } +@SuppressLint("CoroutineCreationDuringComposition") @Composable fun LoginView(viewModel: LoginViewModel) { var email by rememberSaveable { mutableStateOf("") } var password by rememberSaveable { mutableStateOf("") } + val focusManager = LocalFocusManager.current + val snackBarHostState = remember { SnackbarHostState() } + val coroutineScope = rememberCoroutineScope() Column( verticalArrangement = Arrangement.Center, @@ -85,6 +102,7 @@ fun LoginView(viewModel: LoginViewModel) { modifier = Modifier .background(MaterialTheme.colors.background) .fillMaxSize() + .clickable { focusManager.clearFocus() } ) { LoginFields( email, @@ -93,6 +111,27 @@ fun LoginView(viewModel: LoginViewModel) { onPasswordChange = { password = it }, onLoginClick = { viewModel.login(email, password) } ) + + // TODO: add a activity indicator (maybe after a delay?) + if (viewModel.isLoading) { + Text("Loading...") + } + + if (viewModel.errorMessage != null) { + coroutineScope.launch { + val result = snackBarHostState + .showSnackbar( + viewModel.errorMessage!!, + actionLabel = "Dismiss", + duration = SnackbarDuration.Indefinite + ) + when (result) { + SnackbarResult.ActionPerformed -> viewModel.resetErrorMessage() + } + } + + SnackbarHost(hostState = snackBarHostState) + } } } @@ -142,7 +181,7 @@ fun LoginFields( } else { Toast.makeText( context, - "Please enter an email and password", + "Please enter an email address and password.", Toast.LENGTH_SHORT ).show() } From da45bcdd2c17a04781f13956d459e298412da97a Mon Sep 17 00:00:00 2001 From: Satindar Dhillon Date: Wed, 17 Aug 2022 20:08:01 -0700 Subject: [PATCH 16/28] update kotlin version. use material3 color scheme. --- android/Omnivore/app/build.gradle | 5 +- .../app/omnivore/omnivore/MainActivity.kt | 10 ++- .../app/omnivore/omnivore/SaveActivity.kt | 2 - .../app/omnivore/omnivore/ui/theme/Color.kt | 64 +++++++++++-- .../app/omnivore/omnivore/ui/theme/Theme.kt | 90 +++++++++++++------ android/Omnivore/build.gradle | 5 +- 6 files changed, 137 insertions(+), 39 deletions(-) diff --git a/android/Omnivore/app/build.gradle b/android/Omnivore/app/build.gradle index a8e4021ae..0b4746285 100644 --- a/android/Omnivore/app/build.gradle +++ b/android/Omnivore/app/build.gradle @@ -39,7 +39,7 @@ android { compose true } composeOptions { - kotlinCompilerExtensionVersion compose_version + kotlinCompilerExtensionVersion = '1.2.0-alpha08' } packagingOptions { resources { @@ -117,6 +117,9 @@ dependencies { kapt 'com.google.dagger:hilt-compiler:2.42' implementation 'com.apollographql.apollo3:apollo-runtime:3.5.0' + + implementation 'androidx.compose.material3:material3:1.0.0-alpha16' + implementation 'androidx.compose.material3:material3-window-size-class:1.0.0-alpha16' } apollo { diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/MainActivity.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/MainActivity.kt index 8d035d34b..2a57287eb 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/MainActivity.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/MainActivity.kt @@ -12,7 +12,8 @@ import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.* import androidx.compose.foundation.text.KeyboardActions import androidx.compose.foundation.text.KeyboardOptions -import androidx.compose.material.* +//import androidx.compose.material.* +import androidx.compose.material3.* import androidx.compose.runtime.* import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.ui.Alignment @@ -40,7 +41,7 @@ class MainActivity : ComponentActivity() { setContent { OmnivoreTheme { // A surface container using the 'background' color from the theme - Surface(modifier = Modifier.fillMaxSize(), color = MaterialTheme.colors.background) { + Surface(modifier = Modifier.fillMaxSize(), color = MaterialTheme.colorScheme.background) { PrimaryView(viewModel) } } @@ -74,7 +75,7 @@ fun LoggedInView(viewModel: LoginViewModel) { verticalArrangement = Arrangement.Center, horizontalAlignment = Alignment.CenterHorizontally, modifier = Modifier - .background(MaterialTheme.colors.background) + .background(MaterialTheme.colorScheme.background) .fillMaxSize() ) { Text("You have a valid auth token. Nice. Go save something in Chrome!") @@ -100,7 +101,7 @@ fun LoginView(viewModel: LoginViewModel) { verticalArrangement = Arrangement.Center, horizontalAlignment = Alignment.CenterHorizontally, modifier = Modifier - .background(MaterialTheme.colors.background) + .background(MaterialTheme.colorScheme.background) .fillMaxSize() .clickable { focusManager.clearFocus() } ) { @@ -135,6 +136,7 @@ fun LoginView(viewModel: LoginViewModel) { } } +@OptIn(ExperimentalMaterial3Api::class) @Composable fun LoginFields( email: String, diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/SaveActivity.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/SaveActivity.kt index 5d22b6d11..9f6730124 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/SaveActivity.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/SaveActivity.kt @@ -12,8 +12,6 @@ import androidx.compose.material.* import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Add import androidx.compose.runtime.Composable -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.remember import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/theme/Color.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/theme/Color.kt index 6ae28aba9..e974e2bd3 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/theme/Color.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/theme/Color.kt @@ -1,8 +1,62 @@ package app.omnivore.omnivore.ui.theme - import androidx.compose.ui.graphics.Color -val Purple200 = Color(0xFFBB86FC) -val Purple500 = Color(0xFF6200EE) -val Purple700 = Color(0xFF3700B3) -val Teal200 = Color(0xFF03DAC5) \ No newline at end of file +val md_theme_light_primary = Color(0xFF745B00) +val md_theme_light_onPrimary = Color(0xFFFFFFFF) +val md_theme_light_primaryContainer = Color(0xFFFFE08C) +val md_theme_light_onPrimaryContainer = Color(0xFF241A00) +val md_theme_light_secondary = Color(0xFF6D5E00) +val md_theme_light_onSecondary = Color(0xFFFFFFFF) +val md_theme_light_secondaryContainer = Color(0xFFFCE365) +val md_theme_light_onSecondaryContainer = Color(0xFF211B00) +val md_theme_light_tertiary = Color(0xFF4B670A) +val md_theme_light_onTertiary = Color(0xFFFFFFFF) +val md_theme_light_tertiaryContainer = Color(0xFFCBEF86) +val md_theme_light_onTertiaryContainer = Color(0xFF141F00) +val md_theme_light_error = Color(0xFFBA1A1A) +val md_theme_light_errorContainer = Color(0xFFFFDAD6) +val md_theme_light_onError = Color(0xFFFFFFFF) +val md_theme_light_onErrorContainer = Color(0xFF410002) +val md_theme_light_background = Color(0xFFF7FFED) +val md_theme_light_onBackground = Color(0xFF032100) +val md_theme_light_surface = Color(0xFFF7FFED) +val md_theme_light_onSurface = Color(0xFF032100) +val md_theme_light_surfaceVariant = Color(0xFFEBE1CF) +val md_theme_light_onSurfaceVariant = Color(0xFF4C4639) +val md_theme_light_outline = Color(0xFF7E7667) +val md_theme_light_inverseOnSurface = Color(0xFFCBFFB5) +val md_theme_light_inverseSurface = Color(0xFF083900) +val md_theme_light_inversePrimary = Color(0xFFEFC125) +val md_theme_light_shadow = Color(0xFF000000) +val md_theme_light_surfaceTint = Color(0xFF745B00) + +val md_theme_dark_primary = Color(0xFFEFC125) +val md_theme_dark_onPrimary = Color(0xFF3D2F00) +val md_theme_dark_primaryContainer = Color(0xFF584400) +val md_theme_dark_onPrimaryContainer = Color(0xFFFFE08C) +val md_theme_dark_secondary = Color(0xFFDEC64C) +val md_theme_dark_onSecondary = Color(0xFF393000) +val md_theme_dark_secondaryContainer = Color(0xFF524600) +val md_theme_dark_onSecondaryContainer = Color(0xFFFCE365) +val md_theme_dark_tertiary = Color(0xFFB0D36D) +val md_theme_dark_onTertiary = Color(0xFF243600) +val md_theme_dark_tertiaryContainer = Color(0xFF364E00) +val md_theme_dark_onTertiaryContainer = Color(0xFFCBEF86) +val md_theme_dark_error = Color(0xFFFFB4AB) +val md_theme_dark_errorContainer = Color(0xFF93000A) +val md_theme_dark_onError = Color(0xFF690005) +val md_theme_dark_onErrorContainer = Color(0xFFFFDAD6) +val md_theme_dark_background = Color(0xFF032100) +val md_theme_dark_onBackground = Color(0xFFB4F39B) +val md_theme_dark_surface = Color(0xFF032100) +val md_theme_dark_onSurface = Color(0xFFB4F39B) +val md_theme_dark_surfaceVariant = Color(0xFF4C4639) +val md_theme_dark_onSurfaceVariant = Color(0xFFCFC5B4) +val md_theme_dark_outline = Color(0xFF989080) +val md_theme_dark_inverseOnSurface = Color(0xFF032100) +val md_theme_dark_inverseSurface = Color(0xFFB4F39B) +val md_theme_dark_inversePrimary = Color(0xFF745B00) +val md_theme_dark_shadow = Color(0xFF000000) +val md_theme_dark_surfaceTint = Color(0xFFEFC125) + +val seed = Color(0xFFE2B513) diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/theme/Theme.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/theme/Theme.kt index a1538a94b..8286c7814 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/theme/Theme.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/theme/Theme.kt @@ -1,44 +1,84 @@ package app.omnivore.omnivore.ui.theme import androidx.compose.foundation.isSystemInDarkTheme -import androidx.compose.material.MaterialTheme -import androidx.compose.material.darkColors -import androidx.compose.material.lightColors import androidx.compose.runtime.Composable +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.lightColorScheme +import androidx.compose.material3.darkColorScheme -private val DarkColorPalette = darkColors( - primary = Purple200, - primaryVariant = Purple700, - secondary = Teal200 +private val LightColors = lightColorScheme( + primary = md_theme_light_primary, + onPrimary = md_theme_light_onPrimary, + primaryContainer = md_theme_light_primaryContainer, + onPrimaryContainer = md_theme_light_onPrimaryContainer, + secondary = md_theme_light_secondary, + onSecondary = md_theme_light_onSecondary, + secondaryContainer = md_theme_light_secondaryContainer, + onSecondaryContainer = md_theme_light_onSecondaryContainer, + tertiary = md_theme_light_tertiary, + onTertiary = md_theme_light_onTertiary, + tertiaryContainer = md_theme_light_tertiaryContainer, + onTertiaryContainer = md_theme_light_onTertiaryContainer, + error = md_theme_light_error, + errorContainer = md_theme_light_errorContainer, + onError = md_theme_light_onError, + onErrorContainer = md_theme_light_onErrorContainer, + background = md_theme_light_background, + onBackground = md_theme_light_onBackground, + surface = md_theme_light_surface, + onSurface = md_theme_light_onSurface, + surfaceVariant = md_theme_light_surfaceVariant, + onSurfaceVariant = md_theme_light_onSurfaceVariant, + outline = md_theme_light_outline, + inverseOnSurface = md_theme_light_inverseOnSurface, + inverseSurface = md_theme_light_inverseSurface, + inversePrimary = md_theme_light_inversePrimary, + surfaceTint = md_theme_light_surfaceTint, ) -private val LightColorPalette = lightColors( - primary = Purple500, - primaryVariant = Purple700, - secondary = Teal200 - /* Other default colors to override - background = Color.White, - surface = Color.White, - onPrimary = Color.White, - onSecondary = Color.Black, - onBackground = Color.Black, - onSurface = Color.Black, - */ +private val DarkColors = darkColorScheme( + primary = md_theme_dark_primary, + onPrimary = md_theme_dark_onPrimary, + primaryContainer = md_theme_dark_primaryContainer, + onPrimaryContainer = md_theme_dark_onPrimaryContainer, + secondary = md_theme_dark_secondary, + onSecondary = md_theme_dark_onSecondary, + secondaryContainer = md_theme_dark_secondaryContainer, + onSecondaryContainer = md_theme_dark_onSecondaryContainer, + tertiary = md_theme_dark_tertiary, + onTertiary = md_theme_dark_onTertiary, + tertiaryContainer = md_theme_dark_tertiaryContainer, + onTertiaryContainer = md_theme_dark_onTertiaryContainer, + error = md_theme_dark_error, + errorContainer = md_theme_dark_errorContainer, + onError = md_theme_dark_onError, + onErrorContainer = md_theme_dark_onErrorContainer, + background = md_theme_dark_background, + onBackground = md_theme_dark_onBackground, + surface = md_theme_dark_surface, + onSurface = md_theme_dark_onSurface, + surfaceVariant = md_theme_dark_surfaceVariant, + onSurfaceVariant = md_theme_dark_onSurfaceVariant, + outline = md_theme_dark_outline, + inverseOnSurface = md_theme_dark_inverseOnSurface, + inverseSurface = md_theme_dark_inverseSurface, + inversePrimary = md_theme_dark_inversePrimary, + surfaceTint = md_theme_dark_surfaceTint, ) @Composable fun OmnivoreTheme(darkTheme: Boolean = isSystemInDarkTheme(), content: @Composable () -> Unit) { - val colors = if (darkTheme) { - DarkColorPalette + val colorScheme = if (darkTheme) { + DarkColors } else { - LightColorPalette + LightColors } MaterialTheme( - colors = colors, - typography = Typography, - shapes = Shapes, + colorScheme = colorScheme, +// typography = Typography, +// shapes = Shapes, content = content ) } diff --git a/android/Omnivore/build.gradle b/android/Omnivore/build.gradle index 934275fa7..a6761e531 100644 --- a/android/Omnivore/build.gradle +++ b/android/Omnivore/build.gradle @@ -1,7 +1,8 @@ buildscript { ext { - compose_version = '1.1.0-beta01' + compose_version = '1.3.0-alpha03' lifecycle_version = '2.5.1' + kotlin_version = '1.6.20' } dependencies { @@ -13,7 +14,7 @@ buildscript { plugins { id 'com.android.application' version '7.2.2' apply false id 'com.android.library' version '7.2.2' apply false - id 'org.jetbrains.kotlin.android' version '1.5.31' apply false + id 'org.jetbrains.kotlin.android' version '1.6.20' apply false // id 'com.android.application' version '7.2.2' apply false // id 'com.android.library' version '7.2.2' apply false // id 'org.jetbrains.kotlin.android' version '1.7.20-Beta' apply false From 4dfc29b68b70f07b12ef2bce95346a779e0996e8 Mon Sep 17 00:00:00 2001 From: Jackson Harper Date: Thu, 18 Aug 2022 17:56:14 +0800 Subject: [PATCH 17/28] Use a ModalBottomSheet for saving on Android --- android/Omnivore/app/build.gradle | 3 +- .../Omnivore/app/src/main/AndroidManifest.xml | 12 + .../java/app/omnivore/omnivore/CloseButton.kt | 47 + .../app/omnivore/omnivore/NewFlowActivity.kt | 11 + .../java/app/omnivore/omnivore/SaveContent.kt | 41 + .../omnivore/omnivore/SaveSheetActivity.kt | 190 ++ .../app/src/main/res/drawable/ic_x_2.xml | 16 + .../app/src/main/res/values/colors.xml | 2 + .../app/src/main/res/values/themes.xml | 18 + android/SaveToOmnivore/.gitignore | 15 - android/SaveToOmnivore/app/.gitignore | 1 - android/SaveToOmnivore/app/build.gradle | 73 - android/SaveToOmnivore/app/proguard-rules.pro | 21 - .../savetoomnivore/ExampleInstrumentedTest.kt | 24 - .../app/src/main/AndroidManifest.xml | 54 - .../app/src/main/graphql/SaveUrl.graphql | 10 - .../app/src/main/graphql/schema.graphqls | 1829 ----------------- .../app/src/main/ic_launcher-playstore.png | Bin 96559 -> 0 bytes .../omnivore/savetoomnivore/AppDatastore.kt | 45 - .../savetoomnivore/ExtensionActivity.kt | 106 - .../omnivore/savetoomnivore/MainActivity.kt | 63 - .../omnivore/savetoomnivore/ui/theme/Color.kt | 11 - .../omnivore/savetoomnivore/ui/theme/Theme.kt | 68 - .../omnivore/savetoomnivore/ui/theme/Type.kt | 34 - .../drawable-v24/ic_launcher_foreground.xml | 30 - .../res/drawable/ic_launcher_background.xml | 170 -- .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 2963 -> 0 bytes .../mipmap-hdpi/ic_launcher_foreground.png | Bin 9816 -> 0 bytes .../res/mipmap-hdpi/ic_launcher_round.png | Bin 5313 -> 0 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 1982 -> 0 bytes .../mipmap-mdpi/ic_launcher_foreground.png | Bin 5038 -> 0 bytes .../res/mipmap-mdpi/ic_launcher_round.png | Bin 3130 -> 0 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 4453 -> 0 bytes .../mipmap-xhdpi/ic_launcher_foreground.png | Bin 16359 -> 0 bytes .../res/mipmap-xhdpi/ic_launcher_round.png | Bin 7990 -> 0 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 7858 -> 0 bytes .../mipmap-xxhdpi/ic_launcher_foreground.png | Bin 34299 -> 0 bytes .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 13932 -> 0 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 12785 -> 0 bytes .../mipmap-xxxhdpi/ic_launcher_foreground.png | Bin 58881 -> 0 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 22342 -> 0 bytes .../app/src/main/res/values/colors.xml | 10 - .../res/values/ic_launcher_background.xml | 4 - .../app/src/main/res/values/strings.xml | 3 - .../app/src/main/res/values/themes.xml | 14 - .../app/src/main/res/xml/backup_rules.xml | 13 - .../main/res/xml/data_extraction_rules.xml | 19 - .../savetoomnivore/ExampleUnitTest.kt | 17 - android/SaveToOmnivore/build.gradle | 14 - android/SaveToOmnivore/gradle.properties | 23 - .../gradle/wrapper/gradle-wrapper.jar | Bin 59203 -> 0 bytes .../gradle/wrapper/gradle-wrapper.properties | 6 - android/SaveToOmnivore/gradlew | 185 -- android/SaveToOmnivore/gradlew.bat | 89 - android/SaveToOmnivore/settings.gradle | 16 - 55 files changed, 339 insertions(+), 2968 deletions(-) create mode 100644 android/Omnivore/app/src/main/java/app/omnivore/omnivore/CloseButton.kt create mode 100644 android/Omnivore/app/src/main/java/app/omnivore/omnivore/NewFlowActivity.kt create mode 100644 android/Omnivore/app/src/main/java/app/omnivore/omnivore/SaveContent.kt create mode 100644 android/Omnivore/app/src/main/java/app/omnivore/omnivore/SaveSheetActivity.kt create mode 100644 android/Omnivore/app/src/main/res/drawable/ic_x_2.xml delete mode 100644 android/SaveToOmnivore/.gitignore delete mode 100644 android/SaveToOmnivore/app/.gitignore delete mode 100644 android/SaveToOmnivore/app/build.gradle delete mode 100644 android/SaveToOmnivore/app/proguard-rules.pro delete mode 100644 android/SaveToOmnivore/app/src/androidTest/java/app/omnivore/savetoomnivore/ExampleInstrumentedTest.kt delete mode 100644 android/SaveToOmnivore/app/src/main/AndroidManifest.xml delete mode 100644 android/SaveToOmnivore/app/src/main/graphql/SaveUrl.graphql delete mode 100644 android/SaveToOmnivore/app/src/main/graphql/schema.graphqls delete mode 100644 android/SaveToOmnivore/app/src/main/ic_launcher-playstore.png delete mode 100644 android/SaveToOmnivore/app/src/main/java/app/omnivore/savetoomnivore/AppDatastore.kt delete mode 100644 android/SaveToOmnivore/app/src/main/java/app/omnivore/savetoomnivore/ExtensionActivity.kt delete mode 100644 android/SaveToOmnivore/app/src/main/java/app/omnivore/savetoomnivore/MainActivity.kt delete mode 100644 android/SaveToOmnivore/app/src/main/java/app/omnivore/savetoomnivore/ui/theme/Color.kt delete mode 100644 android/SaveToOmnivore/app/src/main/java/app/omnivore/savetoomnivore/ui/theme/Theme.kt delete mode 100644 android/SaveToOmnivore/app/src/main/java/app/omnivore/savetoomnivore/ui/theme/Type.kt delete mode 100644 android/SaveToOmnivore/app/src/main/res/drawable-v24/ic_launcher_foreground.xml delete mode 100644 android/SaveToOmnivore/app/src/main/res/drawable/ic_launcher_background.xml delete mode 100644 android/SaveToOmnivore/app/src/main/res/mipmap-hdpi/ic_launcher.png delete mode 100644 android/SaveToOmnivore/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png delete mode 100644 android/SaveToOmnivore/app/src/main/res/mipmap-hdpi/ic_launcher_round.png delete mode 100644 android/SaveToOmnivore/app/src/main/res/mipmap-mdpi/ic_launcher.png delete mode 100644 android/SaveToOmnivore/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png delete mode 100644 android/SaveToOmnivore/app/src/main/res/mipmap-mdpi/ic_launcher_round.png delete mode 100644 android/SaveToOmnivore/app/src/main/res/mipmap-xhdpi/ic_launcher.png delete mode 100644 android/SaveToOmnivore/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png delete mode 100644 android/SaveToOmnivore/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png delete mode 100644 android/SaveToOmnivore/app/src/main/res/mipmap-xxhdpi/ic_launcher.png delete mode 100644 android/SaveToOmnivore/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png delete mode 100644 android/SaveToOmnivore/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png delete mode 100644 android/SaveToOmnivore/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png delete mode 100644 android/SaveToOmnivore/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png delete mode 100644 android/SaveToOmnivore/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png delete mode 100644 android/SaveToOmnivore/app/src/main/res/values/colors.xml delete mode 100644 android/SaveToOmnivore/app/src/main/res/values/ic_launcher_background.xml delete mode 100644 android/SaveToOmnivore/app/src/main/res/values/strings.xml delete mode 100644 android/SaveToOmnivore/app/src/main/res/values/themes.xml delete mode 100644 android/SaveToOmnivore/app/src/main/res/xml/backup_rules.xml delete mode 100644 android/SaveToOmnivore/app/src/main/res/xml/data_extraction_rules.xml delete mode 100644 android/SaveToOmnivore/app/src/test/java/app/omnivore/savetoomnivore/ExampleUnitTest.kt delete mode 100644 android/SaveToOmnivore/build.gradle delete mode 100644 android/SaveToOmnivore/gradle.properties delete mode 100644 android/SaveToOmnivore/gradle/wrapper/gradle-wrapper.jar delete mode 100644 android/SaveToOmnivore/gradle/wrapper/gradle-wrapper.properties delete mode 100755 android/SaveToOmnivore/gradlew delete mode 100644 android/SaveToOmnivore/gradlew.bat delete mode 100644 android/SaveToOmnivore/settings.gradle diff --git a/android/Omnivore/app/build.gradle b/android/Omnivore/app/build.gradle index 0b4746285..c23dcee14 100644 --- a/android/Omnivore/app/build.gradle +++ b/android/Omnivore/app/build.gradle @@ -49,13 +49,14 @@ android { } dependencies { - implementation 'androidx.core:core-ktx:1.7.0' implementation "androidx.compose.ui:ui:$compose_version" implementation "androidx.compose.material:material:$compose_version" implementation "androidx.compose.ui:ui-tooling-preview:$compose_version" implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.3.1' implementation 'androidx.activity:activity-compose:1.3.1' + implementation 'androidx.appcompat:appcompat:1.4.1' + testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.3' androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' diff --git a/android/Omnivore/app/src/main/AndroidManifest.xml b/android/Omnivore/app/src/main/AndroidManifest.xml index b067f10f0..ed213ee7f 100644 --- a/android/Omnivore/app/src/main/AndroidManifest.xml +++ b/android/Omnivore/app/src/main/AndroidManifest.xml @@ -28,6 +28,17 @@ + + + + + + + + diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/CloseButton.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/CloseButton.kt new file mode 100644 index 000000000..aabee8b6b --- /dev/null +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/CloseButton.kt @@ -0,0 +1,47 @@ +package app.omnivore.omnivore + +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.material.Button +import androidx.compose.material.ButtonDefaults +import androidx.compose.material.Icon +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.res.colorResource +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.unit.dp +import app.omnivore.omnivore.R + +typealias OnClickedClose = () -> Unit + +@Composable +fun CloseButton( + modifier: Modifier = Modifier, + onClickedClose: OnClickedClose +) { + Box( + modifier.then( + Modifier.padding(end = 13.dp, top = 13.dp) + ) + ) { + Button( + onClick = { onClickedClose() }, + modifier = Modifier.size(26.dp), + shape = CircleShape, + elevation = ButtonDefaults.elevation(defaultElevation = 0.dp, pressedElevation = 0.dp), + contentPadding = PaddingValues(0.dp), + colors = ButtonDefaults.outlinedButtonColors(backgroundColor = colorResource(id = R.color.cloud)) + ) { + Icon( + modifier = Modifier.align(Alignment.CenterVertically), + painter = painterResource(id = R.drawable.ic_x_2), + contentDescription = "CLOSE_BUTTON_DESCRIPTION", + tint = colorResource(id = R.color.gray_B7B7B7) + ) + } + } +} diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/NewFlowActivity.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/NewFlowActivity.kt new file mode 100644 index 000000000..0748fda0f --- /dev/null +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/NewFlowActivity.kt @@ -0,0 +1,11 @@ +package app.omnivore.omnivore + +import androidx.compose.material.ExperimentalMaterialApi + +// Not sure why we need this class, but directly opening SaveSheetActivity +// causes the app to crash. + +@OptIn(ExperimentalMaterialApi::class) +class NewFlowActivity : SaveSheetActivity() { + +} diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/SaveContent.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/SaveContent.kt new file mode 100644 index 000000000..c1dce23f0 --- /dev/null +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/SaveContent.kt @@ -0,0 +1,41 @@ +package app.omnivore.omnivore + +import android.view.Surface +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.* +import androidx.compose.material.MaterialTheme +import androidx.compose.material.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Alignment.Companion.CenterHorizontally +import androidx.compose.ui.Modifier +import androidx.compose.material.* +import androidx.compose.ui.unit.dp + +@Composable +fun SaveContent(extractedText: String?, modifier: Modifier, button: (@Composable () -> Unit)? = null) { + Surface(modifier = Modifier.fillMaxSize(), color = MaterialTheme.colors.background) { + Column( + verticalArrangement = Arrangement.Center, + horizontalAlignment = Alignment.CenterHorizontally, + modifier = Modifier + .background(MaterialTheme.colors.background) + .fillMaxSize() + ) { + val authToken = "authToken" + + Text(text = extractedText ?: "no text extracted") + Spacer(modifier = Modifier.height(16.dp)) + Text(text = authToken ?: "no auth token") + + } + } + Column { + button?.let { + Box(modifier = Modifier.align(CenterHorizontally)) { + button() + } + } + } +} + diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/SaveSheetActivity.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/SaveSheetActivity.kt new file mode 100644 index 000000000..ba2b1422e --- /dev/null +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/SaveSheetActivity.kt @@ -0,0 +1,190 @@ +package app.omnivore.omnivore + +import android.content.ContentValues +import android.content.Intent +import android.os.Bundle +import android.util.Log +import androidx.activity.compose.BackHandler +import androidx.activity.compose.setContent +import androidx.activity.viewModels +import androidx.appcompat.app.AppCompatActivity +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.* +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material.* +import androidx.compose.runtime.* +import androidx.compose.ui.Alignment.Companion.TopCenter +import androidx.compose.ui.Alignment.Companion.TopEnd +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.unit.dp +import androidx.core.view.WindowCompat +import dagger.hilt.android.AndroidEntryPoint +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.launch + + +@AndroidEntryPoint +@OptIn(ExperimentalMaterialApi::class) +abstract class SaveSheetActivity: AppCompatActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + val viewModel: SaveViewModel by viewModels() + var extractedText: String? = null + val authToken = viewModel.getAuthToken() + + when (intent?.action) { + Intent.ACTION_SEND -> { + if (intent.type?.startsWith("text/plain") == true) { + intent.getStringExtra(Intent.EXTRA_TEXT)?.let { + Log.d(ContentValues.TAG, "Extracted text: $extractedText") + extractedText = it + viewModel.saveURL(it) + } + } + + if (intent.type?.startsWith("text/html") == true) { + intent.getStringExtra(Intent.EXTRA_HTML_TEXT)?.let { + extractedText = it + } + } + } + else -> { + // Handle other intents, such as being started from the home screen + } + } + + setContent { + val coroutineScope = rememberCoroutineScope() + val modalBottomSheetState = rememberModalBottomSheetState(ModalBottomSheetValue.Hidden) + val isSheetOpened = remember { mutableStateOf(false) } + + ModalBottomSheetLayout( + sheetBackgroundColor = Color.Transparent, + sheetState = modalBottomSheetState, + sheetContent = { + BottomSheetUI(coroutineScope, modalBottomSheetState) { + ScreenContent(extractedText, coroutineScope, modalBottomSheetState) { + onFinish(coroutineScope, modalBottomSheetState) + } + } + } + ) {} + + BackHandler { + onFinish(coroutineScope, modalBottomSheetState) + } + + // Take action based on hidden state + LaunchedEffect(modalBottomSheetState.currentValue) { + when (modalBottomSheetState.currentValue) { + ModalBottomSheetValue.Hidden -> { + handleBottomSheetAtHiddenState( + isSheetOpened, + modalBottomSheetState + ) + } + else -> { + Log.i(TAG, "Bottom sheet ${modalBottomSheetState.currentValue} state") + } + } + } + } + } + + @Composable + private fun BottomSheetUI( + coroutineScope: CoroutineScope, + modalBottomSheetState: ModalBottomSheetState, + content: @Composable () -> Unit + ) { + Box( + modifier = Modifier + .wrapContentHeight() + .fillMaxWidth() + .clip(RoundedCornerShape(topEnd = 20.dp, topStart = 20.dp)) + .background(Color.White) + .statusBarsPadding() + ) { + content() + + Divider( + color = Color.Gray, + thickness = 5.dp, + modifier = Modifier + .padding(top = 15.dp) + .align(TopCenter) + .width(80.dp) + .clip(RoundedCornerShape(50.dp)) + ) + + CloseButton( + modifier = Modifier + .align(TopEnd) + .padding(10.dp) + ) { + coroutineScope.launch { + modalBottomSheetState.hide() + } + } + } + } + + // Helper methods + private suspend fun handleBottomSheetAtHiddenState( + isSheetOpened: MutableState, + modalBottomSheetState: ModalBottomSheetState + ) { + when { + !isSheetOpened.value -> initializeModalLayout(isSheetOpened, modalBottomSheetState) + else -> exit() + } + } + + private suspend fun initializeModalLayout( + isSheetOpened: MutableState, + modalBottomSheetState: ModalBottomSheetState + ) { + isSheetOpened.value = true + modalBottomSheetState.show() + } + + open fun exit() = finish() + + private fun onFinish( + coroutineScope: CoroutineScope, + modalBottomSheetState: ModalBottomSheetState, + withResults: Boolean = false, + result: Intent? = null + ) { + coroutineScope.launch { + if (withResults) setResult(RESULT_OK) + result?.let { intent = it} + modalBottomSheetState.hide() // will trigger the LaunchedEffect + } + } + + @Composable + fun ScreenContent( + extractedText: String?, + coroutineScope: CoroutineScope, + modalBottomSheetState: ModalBottomSheetState, + onExit: () -> Unit? + ) { + Box(modifier = Modifier.height(300.dp).background(Color.White)) { + SaveContent(extractedText, modifier = Modifier.fillMaxSize()) + } + } + + override fun onPause() { + super.onPause() + overridePendingTransition(0, 0) + } + + companion object { + private val TAG = SaveSheetActivity::class.java.simpleName + } +} diff --git a/android/Omnivore/app/src/main/res/drawable/ic_x_2.xml b/android/Omnivore/app/src/main/res/drawable/ic_x_2.xml new file mode 100644 index 000000000..0899ee9ed --- /dev/null +++ b/android/Omnivore/app/src/main/res/drawable/ic_x_2.xml @@ -0,0 +1,16 @@ + + + + diff --git a/android/Omnivore/app/src/main/res/values/colors.xml b/android/Omnivore/app/src/main/res/values/colors.xml index ca1931bca..234f693f1 100644 --- a/android/Omnivore/app/src/main/res/values/colors.xml +++ b/android/Omnivore/app/src/main/res/values/colors.xml @@ -7,4 +7,6 @@ #FF018786 #FF000000 #FFFFFFFF + #F7F7F7 + #B7B7B7 diff --git a/android/Omnivore/app/src/main/res/values/themes.xml b/android/Omnivore/app/src/main/res/values/themes.xml index fb34267cb..0b211c476 100644 --- a/android/Omnivore/app/src/main/res/values/themes.xml +++ b/android/Omnivore/app/src/main/res/values/themes.xml @@ -4,4 +4,22 @@ + + diff --git a/android/SaveToOmnivore/.gitignore b/android/SaveToOmnivore/.gitignore deleted file mode 100644 index aa724b770..000000000 --- a/android/SaveToOmnivore/.gitignore +++ /dev/null @@ -1,15 +0,0 @@ -*.iml -.gradle -/local.properties -/.idea/caches -/.idea/libraries -/.idea/modules.xml -/.idea/workspace.xml -/.idea/navEditor.xml -/.idea/assetWizardSettings.xml -.DS_Store -/build -/captures -.externalNativeBuild -.cxx -local.properties diff --git a/android/SaveToOmnivore/app/.gitignore b/android/SaveToOmnivore/app/.gitignore deleted file mode 100644 index 42afabfd2..000000000 --- a/android/SaveToOmnivore/app/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/build \ No newline at end of file diff --git a/android/SaveToOmnivore/app/build.gradle b/android/SaveToOmnivore/app/build.gradle deleted file mode 100644 index 9c89431b1..000000000 --- a/android/SaveToOmnivore/app/build.gradle +++ /dev/null @@ -1,73 +0,0 @@ - -plugins { - id 'com.android.application' - id 'org.jetbrains.kotlin.android' - id("com.apollographql.apollo3").version("3.4.0") -} - -android { - compileSdk 32 - - defaultConfig { - applicationId "app.omnivore.savetoomnivore" - minSdk 23 - targetSdk 32 - versionCode 3 - versionName "0.3" - - testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" - vectorDrawables { - useSupportLibrary true - } - } - - buildTypes { - release { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - } - } - compileOptions { - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 - } - kotlinOptions { - jvmTarget = '1.8' - } - buildFeatures { - compose true - } - composeOptions { - kotlinCompilerExtensionVersion "1.2.0-alpha08" - } - packagingOptions { - resources { - excludes += '/META-INF/{AL2.0,LGPL2.1}' - } - } -} - -dependencies { - - implementation 'androidx.core:core-ktx:1.7.0' - implementation "androidx.compose.ui:ui:$compose_version" - implementation 'androidx.compose.material3:material3:1.0.0-alpha14' - implementation "androidx.compose.ui:ui-tooling-preview:$compose_version" - implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.3.1' - implementation 'androidx.activity:activity-compose:1.3.1' - implementation 'com.apollographql.apollo3:apollo-runtime:3.4.0' - implementation 'androidx.security:security-crypto-ktx:1.1.0-alpha03' - implementation 'androidx.datastore:datastore-core:1.0.0-rc01' - implementation "androidx.datastore:datastore-preferences:1.0.0" - - testImplementation 'junit:junit:4.13.2' - androidTestImplementation 'androidx.test.ext:junit:1.1.3' - androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' - androidTestImplementation "androidx.compose.ui:ui-test-junit4:$compose_version" - debugImplementation "androidx.compose.ui:ui-tooling:$compose_version" - debugImplementation "androidx.compose.ui:ui-test-manifest:$compose_version" -} - -apollo { - packageName.set("app.omnivore.generated") -} \ No newline at end of file diff --git a/android/SaveToOmnivore/app/proguard-rules.pro b/android/SaveToOmnivore/app/proguard-rules.pro deleted file mode 100644 index 481bb4348..000000000 --- a/android/SaveToOmnivore/app/proguard-rules.pro +++ /dev/null @@ -1,21 +0,0 @@ -# Add project specific ProGuard rules here. -# You can control the set of applied configuration files using the -# proguardFiles setting in build.gradle. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} - -# Uncomment this to preserve the line number information for -# debugging stack traces. -#-keepattributes SourceFile,LineNumberTable - -# If you keep the line number information, uncomment this to -# hide the original source file name. -#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/android/SaveToOmnivore/app/src/androidTest/java/app/omnivore/savetoomnivore/ExampleInstrumentedTest.kt b/android/SaveToOmnivore/app/src/androidTest/java/app/omnivore/savetoomnivore/ExampleInstrumentedTest.kt deleted file mode 100644 index 7bda9bc5a..000000000 --- a/android/SaveToOmnivore/app/src/androidTest/java/app/omnivore/savetoomnivore/ExampleInstrumentedTest.kt +++ /dev/null @@ -1,24 +0,0 @@ -package app.omnivore.savetoomnivore - -import androidx.test.platform.app.InstrumentationRegistry -import androidx.test.ext.junit.runners.AndroidJUnit4 - -import org.junit.Test -import org.junit.runner.RunWith - -import org.junit.Assert.* - -/** - * Instrumented test, which will execute on an Android device. - * - * See [testing documentation](http://d.android.com/tools/testing). - */ -@RunWith(AndroidJUnit4::class) -class ExampleInstrumentedTest { - @Test - fun useAppContext() { - // Context of the app under test. - val appContext = InstrumentationRegistry.getInstrumentation().targetContext - assertEquals("app.omnivore.savetoomnivore", appContext.packageName) - } -} \ No newline at end of file diff --git a/android/SaveToOmnivore/app/src/main/AndroidManifest.xml b/android/SaveToOmnivore/app/src/main/AndroidManifest.xml deleted file mode 100644 index bcab33f06..000000000 --- a/android/SaveToOmnivore/app/src/main/AndroidManifest.xml +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/android/SaveToOmnivore/app/src/main/graphql/SaveUrl.graphql b/android/SaveToOmnivore/app/src/main/graphql/SaveUrl.graphql deleted file mode 100644 index c2a2d2428..000000000 --- a/android/SaveToOmnivore/app/src/main/graphql/SaveUrl.graphql +++ /dev/null @@ -1,10 +0,0 @@ -mutation SaveUrl ($input: SaveUrlInput!) { - saveUrl(input:$input){ - ... on SaveSuccess { - url - } - ... on SaveError { - errorCodes - } - } -} \ No newline at end of file diff --git a/android/SaveToOmnivore/app/src/main/graphql/schema.graphqls b/android/SaveToOmnivore/app/src/main/graphql/schema.graphqls deleted file mode 100644 index 187b8d072..000000000 --- a/android/SaveToOmnivore/app/src/main/graphql/schema.graphqls +++ /dev/null @@ -1,1829 +0,0 @@ -directive @sanitize(allowedTags: [String], maxLength: Int, pattern: String) on INPUT_FIELD_DEFINITION - -type AddPopularReadError { - errorCodes: [AddPopularReadErrorCode!]! -} - -enum AddPopularReadErrorCode { - BAD_REQUEST - NOT_FOUND - UNAUTHORIZED -} - -union AddPopularReadResult = AddPopularReadError | AddPopularReadSuccess - -type AddPopularReadSuccess { - pageId: String! -} - -type ApiKey { - createdAt: Date! - expiresAt: Date! - id: ID! - key: String - name: String! - scopes: [String!] - usedAt: Date -} - -type ApiKeysError { - errorCodes: [ApiKeysErrorCode!]! -} - -enum ApiKeysErrorCode { - BAD_REQUEST - UNAUTHORIZED -} - -union ApiKeysResult = ApiKeysError | ApiKeysSuccess - -type ApiKeysSuccess { - apiKeys: [ApiKey!]! -} - -type ArchiveLinkError { - errorCodes: [ArchiveLinkErrorCode!]! - message: String! -} - -enum ArchiveLinkErrorCode { - BAD_REQUEST - UNAUTHORIZED -} - -input ArchiveLinkInput { - archived: Boolean! - linkId: ID! -} - -union ArchiveLinkResult = ArchiveLinkError | ArchiveLinkSuccess - -type ArchiveLinkSuccess { - linkId: String! - message: String! -} - -type Article { - author: String - content: String! - contentReader: ContentReader! - createdAt: Date! - description: String - hasContent: Boolean - hash: String! - highlights(input: ArticleHighlightsInput): [Highlight!]! - id: ID! - image: String - isArchived: Boolean! - labels: [Label!] - language: String - linkId: ID - originalArticleUrl: String - originalHtml: String - pageType: PageType - postedByViewer: Boolean - publishedAt: Date - readAt: Date - readingProgressAnchorIndex: Int! - readingProgressPercent: Float! - savedAt: Date! - savedByViewer: Boolean - shareInfo: LinkShareInfo - sharedComment: String - siteIcon: String - siteName: String - slug: String! - state: ArticleSavingRequestStatus - subscription: String - title: String! - unsubHttpUrl: String - unsubMailTo: String - updatedAt: Date! - uploadFileId: ID - url: String! -} - -type ArticleEdge { - cursor: String! - node: Article! -} - -type ArticleError { - errorCodes: [ArticleErrorCode!]! -} - -enum ArticleErrorCode { - BAD_DATA - NOT_FOUND - UNAUTHORIZED -} - -input ArticleHighlightsInput { - includeFriends: Boolean -} - -union ArticleResult = ArticleError | ArticleSuccess - -type ArticleSavingRequest { - article: Article @deprecated(reason: "article has been replaced with slug") - createdAt: Date! - errorCode: CreateArticleErrorCode - id: ID! - slug: String! - status: ArticleSavingRequestStatus! - updatedAt: Date! - user: User! - userId: ID! @deprecated(reason: "userId has been replaced with user") -} - -type ArticleSavingRequestError { - errorCodes: [ArticleSavingRequestErrorCode!]! -} - -enum ArticleSavingRequestErrorCode { - NOT_FOUND - UNAUTHORIZED -} - -union ArticleSavingRequestResult = ArticleSavingRequestError | ArticleSavingRequestSuccess - -enum ArticleSavingRequestStatus { - FAILED - PROCESSING - SUCCEEDED -} - -type ArticleSavingRequestSuccess { - articleSavingRequest: ArticleSavingRequest! -} - -type ArticleSuccess { - article: Article! -} - -type ArticlesError { - errorCodes: [ArticlesErrorCode!]! -} - -enum ArticlesErrorCode { - UNAUTHORIZED -} - -union ArticlesResult = ArticlesError | ArticlesSuccess - -type ArticlesSuccess { - edges: [ArticleEdge!]! - pageInfo: PageInfo! -} - -enum ContentReader { - PDF - WEB -} - -type CreateArticleError { - errorCodes: [CreateArticleErrorCode!]! -} - -enum CreateArticleErrorCode { - ELASTIC_ERROR - NOT_ALLOWED_TO_PARSE - PAYLOAD_TOO_LARGE - UNABLE_TO_FETCH - UNABLE_TO_PARSE - UNAUTHORIZED - UPLOAD_FILE_MISSING -} - -input CreateArticleInput { - articleSavingRequestId: ID - preparedDocument: PreparedDocumentInput - skipParsing: Boolean - source: String - uploadFileId: ID - url: String! -} - -union CreateArticleResult = CreateArticleError | CreateArticleSuccess - -type CreateArticleSavingRequestError { - errorCodes: [CreateArticleSavingRequestErrorCode!]! -} - -enum CreateArticleSavingRequestErrorCode { - BAD_DATA - UNAUTHORIZED -} - -input CreateArticleSavingRequestInput { - url: String! -} - -union CreateArticleSavingRequestResult = CreateArticleSavingRequestError | CreateArticleSavingRequestSuccess - -type CreateArticleSavingRequestSuccess { - articleSavingRequest: ArticleSavingRequest! -} - -type CreateArticleSuccess { - created: Boolean! - createdArticle: Article! - user: User! -} - -type CreateHighlightError { - errorCodes: [CreateHighlightErrorCode!]! -} - -enum CreateHighlightErrorCode { - ALREADY_EXISTS - BAD_DATA - FORBIDDEN - NOT_FOUND - UNAUTHORIZED -} - -input CreateHighlightInput { - annotation: String - articleId: ID! - id: ID! - patch: String! - prefix: String - quote: String! - sharedAt: Date - shortId: String! - suffix: String -} - -type CreateHighlightReplyError { - errorCodes: [CreateHighlightReplyErrorCode!]! -} - -enum CreateHighlightReplyErrorCode { - EMPTY_ANNOTATION - FORBIDDEN - NOT_FOUND - UNAUTHORIZED -} - -input CreateHighlightReplyInput { - highlightId: ID! - text: String! -} - -union CreateHighlightReplyResult = CreateHighlightReplyError | CreateHighlightReplySuccess - -type CreateHighlightReplySuccess { - highlightReply: HighlightReply! -} - -union CreateHighlightResult = CreateHighlightError | CreateHighlightSuccess - -type CreateHighlightSuccess { - highlight: Highlight! -} - -type CreateLabelError { - errorCodes: [CreateLabelErrorCode!]! -} - -enum CreateLabelErrorCode { - BAD_REQUEST - LABEL_ALREADY_EXISTS - NOT_FOUND - UNAUTHORIZED -} - -input CreateLabelInput { - color: String! - description: String - name: String! -} - -union CreateLabelResult = CreateLabelError | CreateLabelSuccess - -type CreateLabelSuccess { - label: Label! -} - -type CreateNewsletterEmailError { - errorCodes: [CreateNewsletterEmailErrorCode!]! -} - -enum CreateNewsletterEmailErrorCode { - BAD_REQUEST - UNAUTHORIZED -} - -union CreateNewsletterEmailResult = CreateNewsletterEmailError | CreateNewsletterEmailSuccess - -type CreateNewsletterEmailSuccess { - newsletterEmail: NewsletterEmail! -} - -type CreateReactionError { - errorCodes: [CreateReactionErrorCode!]! -} - -enum CreateReactionErrorCode { - BAD_CODE - BAD_TARGET - FORBIDDEN - NOT_FOUND - UNAUTHORIZED -} - -input CreateReactionInput { - code: ReactionType! - highlightId: ID - userArticleId: ID -} - -union CreateReactionResult = CreateReactionError | CreateReactionSuccess - -type CreateReactionSuccess { - reaction: Reaction! -} - -type CreateReminderError { - errorCodes: [CreateReminderErrorCode!]! -} - -enum CreateReminderErrorCode { - BAD_REQUEST - NOT_FOUND - UNAUTHORIZED -} - -input CreateReminderInput { - archiveUntil: Boolean! - clientRequestId: ID - linkId: ID - remindAt: Date! - sendNotification: Boolean! -} - -union CreateReminderResult = CreateReminderError | CreateReminderSuccess - -type CreateReminderSuccess { - reminder: Reminder! -} - -scalar Date - -type DeleteAccountError { - errorCodes: [DeleteAccountErrorCode!]! -} - -enum DeleteAccountErrorCode { - FORBIDDEN - UNAUTHORIZED - USER_NOT_FOUND -} - -union DeleteAccountResult = DeleteAccountError | DeleteAccountSuccess - -type DeleteAccountSuccess { - userID: ID! -} - -type DeleteHighlightError { - errorCodes: [DeleteHighlightErrorCode!]! -} - -enum DeleteHighlightErrorCode { - FORBIDDEN - NOT_FOUND - UNAUTHORIZED -} - -type DeleteHighlightReplyError { - errorCodes: [DeleteHighlightReplyErrorCode!]! -} - -enum DeleteHighlightReplyErrorCode { - FORBIDDEN - NOT_FOUND - UNAUTHORIZED -} - -union DeleteHighlightReplyResult = DeleteHighlightReplyError | DeleteHighlightReplySuccess - -type DeleteHighlightReplySuccess { - highlightReply: HighlightReply! -} - -union DeleteHighlightResult = DeleteHighlightError | DeleteHighlightSuccess - -type DeleteHighlightSuccess { - highlight: Highlight! -} - -type DeleteLabelError { - errorCodes: [DeleteLabelErrorCode!]! -} - -enum DeleteLabelErrorCode { - BAD_REQUEST - NOT_FOUND - UNAUTHORIZED -} - -union DeleteLabelResult = DeleteLabelError | DeleteLabelSuccess - -type DeleteLabelSuccess { - label: Label! -} - -type DeleteNewsletterEmailError { - errorCodes: [DeleteNewsletterEmailErrorCode!]! -} - -enum DeleteNewsletterEmailErrorCode { - BAD_REQUEST - NOT_FOUND - UNAUTHORIZED -} - -union DeleteNewsletterEmailResult = DeleteNewsletterEmailError | DeleteNewsletterEmailSuccess - -type DeleteNewsletterEmailSuccess { - newsletterEmail: NewsletterEmail! -} - -type DeleteReactionError { - errorCodes: [DeleteReactionErrorCode!]! -} - -enum DeleteReactionErrorCode { - FORBIDDEN - NOT_FOUND - UNAUTHORIZED -} - -union DeleteReactionResult = DeleteReactionError | DeleteReactionSuccess - -type DeleteReactionSuccess { - reaction: Reaction! -} - -type DeleteReminderError { - errorCodes: [DeleteReminderErrorCode!]! -} - -enum DeleteReminderErrorCode { - BAD_REQUEST - NOT_FOUND - UNAUTHORIZED -} - -union DeleteReminderResult = DeleteReminderError | DeleteReminderSuccess - -type DeleteReminderSuccess { - reminder: Reminder! -} - -type DeleteWebhookError { - errorCodes: [DeleteWebhookErrorCode!]! -} - -enum DeleteWebhookErrorCode { - BAD_REQUEST - NOT_FOUND - UNAUTHORIZED -} - -union DeleteWebhookResult = DeleteWebhookError | DeleteWebhookSuccess - -type DeleteWebhookSuccess { - webhook: Webhook! -} - -type DeviceToken { - createdAt: Date! - id: ID! - token: String! -} - -type FeedArticle { - annotationsCount: Int - article: Article! - highlight: Highlight - highlightsCount: Int - id: ID! - reactions: [Reaction!]! - sharedAt: Date! - sharedBy: User! - sharedComment: String - sharedWithHighlights: Boolean -} - -type FeedArticleEdge { - cursor: String! - node: FeedArticle! -} - -type FeedArticlesError { - errorCodes: [FeedArticlesErrorCode!]! -} - -enum FeedArticlesErrorCode { - UNAUTHORIZED -} - -union FeedArticlesResult = FeedArticlesError | FeedArticlesSuccess - -type FeedArticlesSuccess { - edges: [FeedArticleEdge!]! - pageInfo: PageInfo! -} - -type GenerateApiKeyError { - errorCodes: [GenerateApiKeyErrorCode!]! -} - -enum GenerateApiKeyErrorCode { - ALREADY_EXISTS - BAD_REQUEST - UNAUTHORIZED -} - -input GenerateApiKeyInput { - expiresAt: Date! - name: String! - scopes: [String!] -} - -union GenerateApiKeyResult = GenerateApiKeyError | GenerateApiKeySuccess - -type GenerateApiKeySuccess { - apiKey: ApiKey! -} - -type GetFollowersError { - errorCodes: [GetFollowersErrorCode!]! -} - -enum GetFollowersErrorCode { - UNAUTHORIZED -} - -union GetFollowersResult = GetFollowersError | GetFollowersSuccess - -type GetFollowersSuccess { - followers: [User!]! -} - -type GetFollowingError { - errorCodes: [GetFollowingErrorCode!]! -} - -enum GetFollowingErrorCode { - UNAUTHORIZED -} - -union GetFollowingResult = GetFollowingError | GetFollowingSuccess - -type GetFollowingSuccess { - following: [User!]! -} - -type GetUserPersonalizationError { - errorCodes: [GetUserPersonalizationErrorCode!]! -} - -enum GetUserPersonalizationErrorCode { - UNAUTHORIZED -} - -union GetUserPersonalizationResult = GetUserPersonalizationError | GetUserPersonalizationSuccess - -type GetUserPersonalizationSuccess { - userPersonalization: UserPersonalization -} - -input GoogleLoginInput { - email: String! - secret: String! -} - -type GoogleSignupError { - errorCodes: [SignupErrorCode]! -} - -input GoogleSignupInput { - bio: String - email: String! - name: String! - pictureUrl: String! - secret: String! - sourceUserId: String! - username: String! -} - -union GoogleSignupResult = GoogleSignupError | GoogleSignupSuccess - -type GoogleSignupSuccess { - me: User! -} - -type Highlight { - annotation: String - createdAt: Date! - createdByMe: Boolean! - id: ID! - patch: String! - prefix: String - quote: String! - reactions: [Reaction!]! - replies: [HighlightReply!]! - sharedAt: Date - shortId: String! - suffix: String - updatedAt: Date! - user: User! -} - -type HighlightReply { - createdAt: Date! - highlight: Highlight! - id: ID! - text: String! - updatedAt: Date! - user: User! -} - -type HighlightStats { - highlightCount: Int! -} - -type Label { - color: String! - createdAt: Date - description: String - id: ID! - name: String! -} - -type LabelsError { - errorCodes: [LabelsErrorCode!]! -} - -enum LabelsErrorCode { - BAD_REQUEST - NOT_FOUND - UNAUTHORIZED -} - -union LabelsResult = LabelsError | LabelsSuccess - -type LabelsSuccess { - labels: [Label!]! -} - -type Link { - highlightStats: HighlightStats! - id: ID! - page: Page! - postedByViewer: Boolean! - readState: ReadState! - savedAt: Date! - savedBy: User! - savedByViewer: Boolean! - shareInfo: LinkShareInfo! - shareStats: ShareStats! - slug: String! - updatedAt: Date! - url: String! -} - -type LinkShareInfo { - description: String! - imageUrl: String! - title: String! -} - -type LogOutError { - errorCodes: [LogOutErrorCode!]! -} - -enum LogOutErrorCode { - LOG_OUT_FAILED -} - -union LogOutResult = LogOutError | LogOutSuccess - -type LogOutSuccess { - message: String -} - -type LoginError { - errorCodes: [LoginErrorCode!]! -} - -enum LoginErrorCode { - ACCESS_DENIED - AUTH_FAILED - INVALID_CREDENTIALS - USER_ALREADY_EXISTS - USER_NOT_FOUND - WRONG_SOURCE -} - -input LoginInput { - email: String! - password: String! -} - -union LoginResult = LoginError | LoginSuccess - -type LoginSuccess { - me: User! -} - -type MergeHighlightError { - errorCodes: [MergeHighlightErrorCode!]! -} - -enum MergeHighlightErrorCode { - ALREADY_EXISTS - BAD_DATA - FORBIDDEN - NOT_FOUND - UNAUTHORIZED -} - -input MergeHighlightInput { - annotation: String - articleId: ID! - id: ID! - overlapHighlightIdList: [String!]! - patch: String! - prefix: String - quote: String! - shortId: ID! - suffix: String -} - -union MergeHighlightResult = MergeHighlightError | MergeHighlightSuccess - -type MergeHighlightSuccess { - highlight: Highlight! - overlapHighlightIdList: [String!]! -} - -type Mutation { - addPopularRead(name: String!): AddPopularReadResult! - createArticle(input: CreateArticleInput!): CreateArticleResult! - createArticleSavingRequest(input: CreateArticleSavingRequestInput!): CreateArticleSavingRequestResult! - createHighlight(input: CreateHighlightInput!): CreateHighlightResult! - createHighlightReply(input: CreateHighlightReplyInput!): CreateHighlightReplyResult! - createLabel(input: CreateLabelInput!): CreateLabelResult! - createNewsletterEmail: CreateNewsletterEmailResult! - createReaction(input: CreateReactionInput!): CreateReactionResult! - createReminder(input: CreateReminderInput!): CreateReminderResult! - deleteAccount(userID: ID!): DeleteAccountResult! - deleteHighlight(highlightId: ID!): DeleteHighlightResult! - deleteHighlightReply(highlightReplyId: ID!): DeleteHighlightReplyResult! - deleteLabel(id: ID!): DeleteLabelResult! - deleteNewsletterEmail(newsletterEmailId: ID!): DeleteNewsletterEmailResult! - deleteReaction(id: ID!): DeleteReactionResult! - deleteReminder(id: ID!): DeleteReminderResult! - deleteWebhook(id: ID!): DeleteWebhookResult! - generateApiKey(input: GenerateApiKeyInput!): GenerateApiKeyResult! - googleLogin(input: GoogleLoginInput!): LoginResult! - googleSignup(input: GoogleSignupInput!): GoogleSignupResult! - logOut: LogOutResult! - login(input: LoginInput!): LoginResult! - mergeHighlight(input: MergeHighlightInput!): MergeHighlightResult! - reportItem(input: ReportItemInput!): ReportItemResult! - revokeApiKey(id: ID!): RevokeApiKeyResult! - saveArticleReadingProgress(input: SaveArticleReadingProgressInput!): SaveArticleReadingProgressResult! - saveFile(input: SaveFileInput!): SaveResult! - savePage(input: SavePageInput!): SaveResult! - saveUrl(input: SaveUrlInput!): SaveResult! - setBookmarkArticle(input: SetBookmarkArticleInput!): SetBookmarkArticleResult! - setDeviceToken(input: SetDeviceTokenInput!): SetDeviceTokenResult! - setFollow(input: SetFollowInput!): SetFollowResult! - setLabels(input: SetLabelsInput!): SetLabelsResult! - setLabelsForHighlight(input: SetLabelsForHighlightInput!): SetLabelsResult! - setLinkArchived(input: ArchiveLinkInput!): ArchiveLinkResult! - setShareArticle(input: SetShareArticleInput!): SetShareArticleResult! - setShareHighlight(input: SetShareHighlightInput!): SetShareHighlightResult! - setUserPersonalization(input: SetUserPersonalizationInput!): SetUserPersonalizationResult! - setWebhook(input: SetWebhookInput!): SetWebhookResult! - signup(input: SignupInput!): SignupResult! - subscribe(name: String!): SubscribeResult! - unsubscribe(name: String!): UnsubscribeResult! - updateHighlight(input: UpdateHighlightInput!): UpdateHighlightResult! - updateHighlightReply(input: UpdateHighlightReplyInput!): UpdateHighlightReplyResult! - updateLabel(input: UpdateLabelInput!): UpdateLabelResult! - updateLinkShareInfo(input: UpdateLinkShareInfoInput!): UpdateLinkShareInfoResult! - updatePage(input: UpdatePageInput!): UpdatePageResult! - updateReminder(input: UpdateReminderInput!): UpdateReminderResult! - updateSharedComment(input: UpdateSharedCommentInput!): UpdateSharedCommentResult! - updateUser(input: UpdateUserInput!): UpdateUserResult! - updateUserProfile(input: UpdateUserProfileInput!): UpdateUserProfileResult! - uploadFileRequest(input: UploadFileRequestInput!): UploadFileRequestResult! -} - -type NewsletterEmail { - address: String! - confirmationCode: String - id: ID! -} - -type NewsletterEmailsError { - errorCodes: [NewsletterEmailsErrorCode!]! -} - -enum NewsletterEmailsErrorCode { - BAD_REQUEST - UNAUTHORIZED -} - -union NewsletterEmailsResult = NewsletterEmailsError | NewsletterEmailsSuccess - -type NewsletterEmailsSuccess { - newsletterEmails: [NewsletterEmail!]! -} - -type Page { - author: String - createdAt: Date! - description: String - hash: String! - id: ID! - image: String! - originalHtml: String! - originalUrl: String! - publishedAt: Date - readableHtml: String! - title: String! - type: PageType! - updatedAt: Date! - url: String! -} - -type PageInfo { - endCursor: String - hasNextPage: Boolean! - hasPreviousPage: Boolean! - startCursor: String - totalCount: Int -} - -input PageInfoInput { - author: String - canonicalUrl: String - contentType: String - description: String - previewImage: String - publishedAt: Date - title: String -} - -enum PageType { - ARTICLE - BOOK - FILE - HIGHLIGHTS - PROFILE - UNKNOWN - WEBSITE -} - -input PreparedDocumentInput { - document: String! - pageInfo: PageInfoInput! -} - -type Profile { - bio: String - id: ID! - pictureUrl: String - private: Boolean! - username: String! -} - -type Query { - apiKeys: ApiKeysResult! - article(slug: String!, username: String!): ArticleResult! - articleSavingRequest(id: ID!): ArticleSavingRequestResult! - articles(after: String, first: Int, includePending: Boolean, query: String, sharedOnly: Boolean, sort: SortParams): ArticlesResult! - feedArticles(after: String, first: Int, sharedByUser: ID, sort: SortParams): FeedArticlesResult! - getFollowers(userId: ID): GetFollowersResult! - getFollowing(userId: ID): GetFollowingResult! - getUserPersonalization: GetUserPersonalizationResult! - hello: String - labels: LabelsResult! - me: User - newsletterEmails: NewsletterEmailsResult! - reminder(linkId: ID!): ReminderResult! - search(after: String, first: Int, query: String): SearchResult! - sendInstallInstructions: SendInstallInstructionsResult! - sharedArticle(selectedHighlightId: String, slug: String!, username: String!): SharedArticleResult! - subscriptions(sort: SortParams): SubscriptionsResult! - typeaheadSearch(first: Int, query: String!): TypeaheadSearchResult! - user(userId: ID, username: String): UserResult! - users: UsersResult! - validateUsername(username: String!): Boolean! - webhook(id: ID!): WebhookResult! - webhooks: WebhooksResult! -} - -type Reaction { - code: ReactionType! - createdAt: Date! - id: ID! - updatedAt: Date - user: User! -} - -enum ReactionType { - CRYING - HEART - HUSHED - LIKE - POUT - SMILE -} - -type ReadState { - progressAnchorIndex: Int! - progressPercent: Float! - reading: Boolean - readingTime: Int -} - -type Reminder { - archiveUntil: Boolean! - id: ID! - remindAt: Date! - sendNotification: Boolean! -} - -type ReminderError { - errorCodes: [ReminderErrorCode!]! -} - -enum ReminderErrorCode { - BAD_REQUEST - NOT_FOUND - UNAUTHORIZED -} - -union ReminderResult = ReminderError | ReminderSuccess - -type ReminderSuccess { - reminder: Reminder! -} - -input ReportItemInput { - itemUrl: String! - pageId: ID! - reportComment: String! - reportTypes: [ReportType!]! - sharedBy: ID -} - -type ReportItemResult { - message: String! -} - -enum ReportType { - ABUSIVE - CONTENT_DISPLAY - CONTENT_VIOLATION - SPAM -} - -type RevokeApiKeyError { - errorCodes: [RevokeApiKeyErrorCode!]! -} - -enum RevokeApiKeyErrorCode { - BAD_REQUEST - NOT_FOUND - UNAUTHORIZED -} - -union RevokeApiKeyResult = RevokeApiKeyError | RevokeApiKeySuccess - -type RevokeApiKeySuccess { - apiKey: ApiKey! -} - -type SaveArticleReadingProgressError { - errorCodes: [SaveArticleReadingProgressErrorCode!]! -} - -enum SaveArticleReadingProgressErrorCode { - BAD_DATA - NOT_FOUND - UNAUTHORIZED -} - -input SaveArticleReadingProgressInput { - id: ID! - readingProgressAnchorIndex: Int! - readingProgressPercent: Float! -} - -union SaveArticleReadingProgressResult = SaveArticleReadingProgressError | SaveArticleReadingProgressSuccess - -type SaveArticleReadingProgressSuccess { - updatedArticle: Article! -} - -type SaveError { - errorCodes: [SaveErrorCode!]! - message: String -} - -enum SaveErrorCode { - UNAUTHORIZED - UNKNOWN -} - -input SaveFileInput { - clientRequestId: ID! - source: String! - uploadFileId: ID! - url: String! -} - -input SavePageInput { - clientRequestId: ID! - originalContent: String! - source: String! - title: String - url: String! -} - -union SaveResult = SaveError | SaveSuccess - -type SaveSuccess { - clientRequestId: ID! - url: String! -} - -input SaveUrlInput { - clientRequestId: ID! - source: String! - url: String! -} - -type SearchError { - errorCodes: [SearchErrorCode!]! -} - -enum SearchErrorCode { - UNAUTHORIZED -} - -type SearchItem { - annotation: String - author: String - contentReader: ContentReader! - createdAt: Date! - description: String - highlights: [Highlight!] - id: ID! - image: String - isArchived: Boolean! - labels: [Label!] - language: String - originalArticleUrl: String - ownedByViewer: Boolean - pageId: ID - pageType: PageType! - publishedAt: Date - quote: String - readAt: Date - readingProgressAnchorIndex: Int! - readingProgressPercent: Float! - savedAt: Date! - shortId: String - siteName: String - slug: String! - state: ArticleSavingRequestStatus - subscription: String - title: String! - unsubHttpUrl: String - unsubMailTo: String - updatedAt: Date - uploadFileId: ID - url: String! -} - -type SearchItemEdge { - cursor: String! - node: SearchItem! -} - -union SearchResult = SearchError | SearchSuccess - -type SearchSuccess { - edges: [SearchItemEdge!]! - pageInfo: PageInfo! -} - -type SendInstallInstructionsError { - errorCodes: [SendInstallInstructionsErrorCode!]! -} - -enum SendInstallInstructionsErrorCode { - BAD_REQUEST - FORBIDDEN - NOT_FOUND - UNAUTHORIZED -} - -union SendInstallInstructionsResult = SendInstallInstructionsError | SendInstallInstructionsSuccess - -type SendInstallInstructionsSuccess { - sent: Boolean! -} - -type SetBookmarkArticleError { - errorCodes: [SetBookmarkArticleErrorCode!]! -} - -enum SetBookmarkArticleErrorCode { - BOOKMARK_EXISTS - NOT_FOUND -} - -input SetBookmarkArticleInput { - articleID: ID! - bookmark: Boolean! -} - -union SetBookmarkArticleResult = SetBookmarkArticleError | SetBookmarkArticleSuccess - -type SetBookmarkArticleSuccess { - bookmarkedArticle: Article! -} - -type SetDeviceTokenError { - errorCodes: [SetDeviceTokenErrorCode!]! -} - -enum SetDeviceTokenErrorCode { - BAD_REQUEST - NOT_FOUND - UNAUTHORIZED -} - -input SetDeviceTokenInput { - id: ID - token: String -} - -union SetDeviceTokenResult = SetDeviceTokenError | SetDeviceTokenSuccess - -type SetDeviceTokenSuccess { - deviceToken: DeviceToken! -} - -type SetFollowError { - errorCodes: [SetFollowErrorCode!]! -} - -enum SetFollowErrorCode { - NOT_FOUND - UNAUTHORIZED -} - -input SetFollowInput { - follow: Boolean! - userId: ID! -} - -union SetFollowResult = SetFollowError | SetFollowSuccess - -type SetFollowSuccess { - updatedUser: User! -} - -type SetLabelsError { - errorCodes: [SetLabelsErrorCode!]! -} - -enum SetLabelsErrorCode { - BAD_REQUEST - NOT_FOUND - UNAUTHORIZED -} - -input SetLabelsForHighlightInput { - highlightId: ID! - labelIds: [ID!]! -} - -input SetLabelsInput { - labelIds: [ID!]! - pageId: ID! -} - -union SetLabelsResult = SetLabelsError | SetLabelsSuccess - -type SetLabelsSuccess { - labels: [Label!]! -} - -type SetShareArticleError { - errorCodes: [SetShareArticleErrorCode!]! -} - -enum SetShareArticleErrorCode { - NOT_FOUND - UNAUTHORIZED -} - -input SetShareArticleInput { - articleID: ID! - share: Boolean! - sharedComment: String - sharedWithHighlights: Boolean -} - -union SetShareArticleResult = SetShareArticleError | SetShareArticleSuccess - -type SetShareArticleSuccess { - updatedArticle: Article! - updatedFeedArticle: FeedArticle - updatedFeedArticleId: String -} - -type SetShareHighlightError { - errorCodes: [SetShareHighlightErrorCode!]! -} - -enum SetShareHighlightErrorCode { - FORBIDDEN - NOT_FOUND - UNAUTHORIZED -} - -input SetShareHighlightInput { - id: ID! - share: Boolean! -} - -union SetShareHighlightResult = SetShareHighlightError | SetShareHighlightSuccess - -type SetShareHighlightSuccess { - highlight: Highlight! -} - -type SetUserPersonalizationError { - errorCodes: [SetUserPersonalizationErrorCode!]! -} - -enum SetUserPersonalizationErrorCode { - UNAUTHORIZED -} - -input SetUserPersonalizationInput { - fontFamily: String - fontSize: Int - libraryLayoutType: String - librarySortOrder: SortOrder - margin: Int - theme: String -} - -union SetUserPersonalizationResult = SetUserPersonalizationError | SetUserPersonalizationSuccess - -type SetUserPersonalizationSuccess { - updatedUserPersonalization: UserPersonalization! -} - -type SetWebhookError { - errorCodes: [SetWebhookErrorCode!]! -} - -enum SetWebhookErrorCode { - ALREADY_EXISTS - BAD_REQUEST - NOT_FOUND - UNAUTHORIZED -} - -input SetWebhookInput { - contentType: String - enabled: Boolean - eventTypes: [WebhookEvent!]! - id: ID - method: String - url: String! -} - -union SetWebhookResult = SetWebhookError | SetWebhookSuccess - -type SetWebhookSuccess { - webhook: Webhook! -} - -type ShareStats { - readDuration: Int! - saveCount: Int! - viewCount: Int! -} - -type SharedArticleError { - errorCodes: [SharedArticleErrorCode!]! -} - -enum SharedArticleErrorCode { - NOT_FOUND -} - -union SharedArticleResult = SharedArticleError | SharedArticleSuccess - -type SharedArticleSuccess { - article: Article! -} - -type SignupError { - errorCodes: [SignupErrorCode]! -} - -enum SignupErrorCode { - ACCESS_DENIED - EXPIRED_TOKEN - GOOGLE_AUTH_ERROR - INVALID_PASSWORD - INVALID_USERNAME - UNKNOWN - USER_EXISTS -} - -input SignupInput { - bio: String - email: String! - name: String! - password: String! - pictureUrl: String - username: String! -} - -union SignupResult = SignupError | SignupSuccess - -type SignupSuccess { - me: User! -} - -enum SortBy { - PUBLISHED_AT - SAVED_AT - SCORE - UPDATED_TIME -} - -enum SortOrder { - ASCENDING - DESCENDING -} - -input SortParams { - by: SortBy! - order: SortOrder -} - -type SubscribeError { - errorCodes: [SubscribeErrorCode!]! -} - -enum SubscribeErrorCode { - ALREADY_SUBSCRIBED - BAD_REQUEST - NOT_FOUND - UNAUTHORIZED -} - -union SubscribeResult = SubscribeError | SubscribeSuccess - -type SubscribeSuccess { - subscriptions: [Subscription!]! -} - -type Subscription { - createdAt: Date! - description: String - id: ID! - name: String! - newsletterEmail: String! - status: SubscriptionStatus! - unsubscribeHttpUrl: String - unsubscribeMailTo: String - updatedAt: Date! - url: String -} - -enum SubscriptionStatus { - ACTIVE - DELETED - UNSUBSCRIBED -} - -type SubscriptionsError { - errorCodes: [SubscriptionsErrorCode!]! -} - -enum SubscriptionsErrorCode { - BAD_REQUEST - UNAUTHORIZED -} - -union SubscriptionsResult = SubscriptionsError | SubscriptionsSuccess - -type SubscriptionsSuccess { - subscriptions: [Subscription!]! -} - -type TypeaheadSearchError { - errorCodes: [TypeaheadSearchErrorCode!]! -} - -enum TypeaheadSearchErrorCode { - UNAUTHORIZED -} - -type TypeaheadSearchItem { - id: ID! - siteName: String - slug: String! - title: String! -} - -union TypeaheadSearchResult = TypeaheadSearchError | TypeaheadSearchSuccess - -type TypeaheadSearchSuccess { - items: [TypeaheadSearchItem!]! -} - -type UnsubscribeError { - errorCodes: [UnsubscribeErrorCode!]! -} - -enum UnsubscribeErrorCode { - ALREADY_UNSUBSCRIBED - BAD_REQUEST - NOT_FOUND - UNAUTHORIZED - UNSUBSCRIBE_METHOD_NOT_FOUND -} - -union UnsubscribeResult = UnsubscribeError | UnsubscribeSuccess - -type UnsubscribeSuccess { - subscription: Subscription! -} - -type UpdateHighlightError { - errorCodes: [UpdateHighlightErrorCode!]! -} - -enum UpdateHighlightErrorCode { - BAD_DATA - FORBIDDEN - NOT_FOUND - UNAUTHORIZED -} - -input UpdateHighlightInput { - annotation: String - highlightId: ID! - sharedAt: Date -} - -type UpdateHighlightReplyError { - errorCodes: [UpdateHighlightReplyErrorCode!]! -} - -enum UpdateHighlightReplyErrorCode { - FORBIDDEN - NOT_FOUND - UNAUTHORIZED -} - -input UpdateHighlightReplyInput { - highlightReplyId: ID! - text: String! -} - -union UpdateHighlightReplyResult = UpdateHighlightReplyError | UpdateHighlightReplySuccess - -type UpdateHighlightReplySuccess { - highlightReply: HighlightReply! -} - -union UpdateHighlightResult = UpdateHighlightError | UpdateHighlightSuccess - -type UpdateHighlightSuccess { - highlight: Highlight! -} - -type UpdateLabelError { - errorCodes: [UpdateLabelErrorCode!]! -} - -enum UpdateLabelErrorCode { - BAD_REQUEST - FORBIDDEN - NOT_FOUND - UNAUTHORIZED -} - -input UpdateLabelInput { - color: String! - description: String - labelId: ID! - name: String! -} - -union UpdateLabelResult = UpdateLabelError | UpdateLabelSuccess - -type UpdateLabelSuccess { - label: Label! -} - -type UpdateLinkShareInfoError { - errorCodes: [UpdateLinkShareInfoErrorCode!]! -} - -enum UpdateLinkShareInfoErrorCode { - BAD_REQUEST - UNAUTHORIZED -} - -input UpdateLinkShareInfoInput { - description: String! - linkId: ID! - title: String! -} - -union UpdateLinkShareInfoResult = UpdateLinkShareInfoError | UpdateLinkShareInfoSuccess - -type UpdateLinkShareInfoSuccess { - message: String! -} - -type UpdatePageError { - errorCodes: [UpdatePageErrorCode!]! -} - -enum UpdatePageErrorCode { - BAD_REQUEST - FORBIDDEN - NOT_FOUND - UNAUTHORIZED - UPDATE_FAILED -} - -input UpdatePageInput { - description: String - pageId: ID! - title: String -} - -union UpdatePageResult = UpdatePageError | UpdatePageSuccess - -type UpdatePageSuccess { - updatedPage: Article! -} - -type UpdateReminderError { - errorCodes: [UpdateReminderErrorCode!]! -} - -enum UpdateReminderErrorCode { - BAD_REQUEST - NOT_FOUND - UNAUTHORIZED -} - -input UpdateReminderInput { - archiveUntil: Boolean! - id: ID! - remindAt: Date! - sendNotification: Boolean! -} - -union UpdateReminderResult = UpdateReminderError | UpdateReminderSuccess - -type UpdateReminderSuccess { - reminder: Reminder! -} - -type UpdateSharedCommentError { - errorCodes: [UpdateSharedCommentErrorCode!]! -} - -enum UpdateSharedCommentErrorCode { - NOT_FOUND - UNAUTHORIZED -} - -input UpdateSharedCommentInput { - articleID: ID! - sharedComment: String! -} - -union UpdateSharedCommentResult = UpdateSharedCommentError | UpdateSharedCommentSuccess - -type UpdateSharedCommentSuccess { - articleID: ID! - sharedComment: String! -} - -type UpdateUserError { - errorCodes: [UpdateUserErrorCode!]! -} - -enum UpdateUserErrorCode { - BIO_TOO_LONG - EMPTY_NAME - UNAUTHORIZED - USER_NOT_FOUND -} - -input UpdateUserInput { - bio: String - name: String! -} - -type UpdateUserProfileError { - errorCodes: [UpdateUserProfileErrorCode!]! -} - -enum UpdateUserProfileErrorCode { - BAD_DATA - BAD_USERNAME - FORBIDDEN - UNAUTHORIZED - USERNAME_EXISTS -} - -input UpdateUserProfileInput { - bio: String - pictureUrl: String - userId: ID! - username: String -} - -union UpdateUserProfileResult = UpdateUserProfileError | UpdateUserProfileSuccess - -type UpdateUserProfileSuccess { - user: User! -} - -union UpdateUserResult = UpdateUserError | UpdateUserSuccess - -type UpdateUserSuccess { - user: User! -} - -type UploadFileRequestError { - errorCodes: [UploadFileRequestErrorCode!]! -} - -enum UploadFileRequestErrorCode { - BAD_INPUT - FAILED_CREATE - UNAUTHORIZED -} - -input UploadFileRequestInput { - clientRequestId: String - contentType: String! - createPageEntry: Boolean - url: String! -} - -union UploadFileRequestResult = UploadFileRequestError | UploadFileRequestSuccess - -type UploadFileRequestSuccess { - createdPageId: String - id: ID! - uploadFileId: ID - uploadSignedUrl: String -} - -enum UploadFileStatus { - COMPLETED - INITIALIZED -} - -type User { - followersCount: Int - friendsCount: Int - id: ID! - isFriend: Boolean @deprecated(reason: "isFriend has been replaced with viewerIsFollowing") - isFullUser: Boolean - name: String! - picture: String - profile: Profile! - sharedArticles: [FeedArticle!]! - sharedArticlesCount: Int - sharedHighlightsCount: Int - sharedNotesCount: Int - viewerIsFollowing: Boolean -} - -type UserError { - errorCodes: [UserErrorCode!]! -} - -enum UserErrorCode { - BAD_REQUEST - UNAUTHORIZED - USER_NOT_FOUND -} - -type UserPersonalization { - fontFamily: String - fontSize: Int - id: ID - libraryLayoutType: String - librarySortOrder: SortOrder - margin: Int - theme: String -} - -union UserResult = UserError | UserSuccess - -type UserSuccess { - user: User! -} - -type UsersError { - errorCodes: [UsersErrorCode!]! -} - -enum UsersErrorCode { - UNAUTHORIZED -} - -union UsersResult = UsersError | UsersSuccess - -type UsersSuccess { - users: [User!]! -} - -type Webhook { - contentType: String! - createdAt: Date! - enabled: Boolean! - eventTypes: [WebhookEvent!]! - id: ID! - method: String! - updatedAt: Date! - url: String! -} - -type WebhookError { - errorCodes: [WebhookErrorCode!]! -} - -enum WebhookErrorCode { - BAD_REQUEST - NOT_FOUND - UNAUTHORIZED -} - -enum WebhookEvent { - HIGHLIGHT_CREATED - HIGHLIGHT_DELETED - HIGHLIGHT_UPDATED - LABEL_CREATED - LABEL_DELETED - LABEL_UPDATED - PAGE_CREATED - PAGE_DELETED - PAGE_UPDATED -} - -union WebhookResult = WebhookError | WebhookSuccess - -type WebhookSuccess { - webhook: Webhook! -} - -type WebhooksError { - errorCodes: [WebhooksErrorCode!]! -} - -enum WebhooksErrorCode { - BAD_REQUEST - UNAUTHORIZED -} - -union WebhooksResult = WebhooksError | WebhooksSuccess - -type WebhooksSuccess { - webhooks: [Webhook!]! -} diff --git a/android/SaveToOmnivore/app/src/main/ic_launcher-playstore.png b/android/SaveToOmnivore/app/src/main/ic_launcher-playstore.png deleted file mode 100644 index 3f5ca02376fae40309ed5219743b81158640afd1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 96559 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 z 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 Z6-=ZLfR@E(;vnGbp{kC`J0+{|{|D)tm5=}c diff --git a/android/SaveToOmnivore/app/src/main/java/app/omnivore/savetoomnivore/AppDatastore.kt b/android/SaveToOmnivore/app/src/main/java/app/omnivore/savetoomnivore/AppDatastore.kt deleted file mode 100644 index 2ad6b5ded..000000000 --- a/android/SaveToOmnivore/app/src/main/java/app/omnivore/savetoomnivore/AppDatastore.kt +++ /dev/null @@ -1,45 +0,0 @@ -package app.omnivore.savetoomnivore - -import android.annotation.SuppressLint -import android.content.Context -import androidx.compose.runtime.Composable -import androidx.compose.runtime.MutableState -import androidx.compose.runtime.remember -import androidx.compose.runtime.rememberCoroutineScope -import androidx.compose.ui.platform.LocalContext -import androidx.datastore.core.DataStore -import androidx.datastore.preferences.core.Preferences -import androidx.datastore.preferences.core.edit -import androidx.datastore.preferences.core.stringPreferencesKey -import androidx.datastore.preferences.preferencesDataStore -import kotlinx.coroutines.flow.Flow -import kotlinx.coroutines.flow.map - -class AppDatastore(private val context: Context) { - private val Context.datastore: DataStore by preferencesDataStore(name = "app_datastore") - private val APIKEY = stringPreferencesKey(name = "API_KEY") - - companion object { - @SuppressLint("StaticFieldLeak") - var INSTANCE: AppDatastore? = null - fun getInstance(base: Context): AppDatastore? { - if (INSTANCE == null) { - synchronized(AppDatastore::class.java) { - INSTANCE = AppDatastore(base.applicationContext) - } - } - - return INSTANCE - } - } - - suspend fun setApiKey(apiKey: String) { - context.datastore.edit { preferences -> - preferences[APIKEY] = apiKey - } - } - - val getApiKey: Flow = context.datastore.data.map { preferences -> - preferences[APIKEY] ?: "" - } -} \ No newline at end of file diff --git a/android/SaveToOmnivore/app/src/main/java/app/omnivore/savetoomnivore/ExtensionActivity.kt b/android/SaveToOmnivore/app/src/main/java/app/omnivore/savetoomnivore/ExtensionActivity.kt deleted file mode 100644 index f0545f764..000000000 --- a/android/SaveToOmnivore/app/src/main/java/app/omnivore/savetoomnivore/ExtensionActivity.kt +++ /dev/null @@ -1,106 +0,0 @@ -package app.omnivore.savetoomnivore - -import android.app.Activity -import android.content.Context -import android.content.Intent -import android.os.Bundle -import android.text.TextUtils.isEmpty -import android.widget.Toast -import androidx.activity.ComponentActivity -import androidx.datastore.core.DataStore -import androidx.datastore.preferences.core.Preferences -import androidx.datastore.preferences.preferencesDataStore -import app.omnivore.generated.SaveUrlMutation -import app.omnivore.generated.type.SaveUrlInput -import com.apollographql.apollo3.ApolloClient -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.GlobalScope -import kotlinx.coroutines.flow.first -import kotlinx.coroutines.launch -import java.util.* -import java.util.regex.Matcher -import java.util.regex.Pattern - - -private val Context.dataStore: DataStore by preferencesDataStore( - name = "settings" -) - -class ExtensionActivity : ComponentActivity() { - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - when { - intent?.action == Intent.ACTION_SEND -> { - if ("text/plain" == intent.type) { - handleSendText(intent) // Handle text being sent - } - } - } - finish() - } - - fun saveURL(url: String) { - - GlobalScope.launch { - val apiKey = AppDatastore.getInstance(baseContext)?.getApiKey?.first() - - val apolloClient = ApolloClient.Builder() - .serverUrl("https://api-prod.omnivore.app/api/graphql") - .addHttpHeader( - "Authorization", - value = apiKey.toString() - ) - .build() - - val source = "android" - val clientRequestId = UUID.randomUUID().toString() - val response = apolloClient.mutation( - SaveUrlMutation( - SaveUrlInput( - clientRequestId = clientRequestId, - source = source, - url = url - ) - ) - ).execute() - - val success = (response.data?.saveUrl?.onSaveSuccess?.url != null) - - GlobalScope.launch(Dispatchers.Main) { - runOnUiThread(Runnable { - val message = if (success) "Saved to Omnivore" else "Error saving to Omnivore" - Toast.makeText(baseContext, message, Toast.LENGTH_LONG).show() - }) - } - } - } - - private fun handleSendText(intent: Intent) { - intent.getStringExtra(Intent.EXTRA_TEXT)?.let { - val url = getUrl(it) - if (url == null || isEmpty(url)) { - Toast.makeText(this, "Error: no URL found.", Toast.LENGTH_LONG).show() - } else { - Toast.makeText(this, "Saving to Omnivore", Toast.LENGTH_LONG).show() - saveURL(it) - } - } - } - - fun getUrl(s: String): String? { - val pattern = - Pattern.compile("[(http(s)?):\\/\\/(www\\.)?a-zA-Z0-9@:%._\\+~#=]{2,256}\\.[a-z]{2,6}\\b([-a-zA-Z0-9@:%_\\+.~#?&//=]*)") - try { - val matcher: Matcher = pattern.matcher(s) - if (matcher.find()) { - return s.substring(matcher.start(), matcher.end()) - } - } catch (e: Exception) { - System.out.println("exception parsing string") - System.out.println(e) - return null - } - return null - } -} diff --git a/android/SaveToOmnivore/app/src/main/java/app/omnivore/savetoomnivore/MainActivity.kt b/android/SaveToOmnivore/app/src/main/java/app/omnivore/savetoomnivore/MainActivity.kt deleted file mode 100644 index aaaff30e9..000000000 --- a/android/SaveToOmnivore/app/src/main/java/app/omnivore/savetoomnivore/MainActivity.kt +++ /dev/null @@ -1,63 +0,0 @@ -package app.omnivore.savetoomnivore - -import android.content.Context -import android.content.SharedPreferences -import android.os.Build -import android.os.Bundle -import android.provider.Settings -import androidx.activity.ComponentActivity -import androidx.activity.compose.setContent -import androidx.annotation.RequiresApi -import androidx.compose.foundation.layout.* -import androidx.compose.foundation.text.BasicTextField -import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.Surface -import androidx.compose.material3.Text -import androidx.compose.runtime.* -import androidx.compose.ui.Alignment -import androidx.compose.ui.Modifier -import androidx.compose.material3.OutlinedTextField -import kotlinx.coroutines.launch -import androidx.lifecycle.lifecycleScope -import kotlinx.coroutines.GlobalScope - -class MainActivity : ComponentActivity() { - - @RequiresApi(Build.VERSION_CODES.M) - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - - setContent { - MaterialTheme { - // A surface container using the 'background' color from the theme - Surface( - modifier = Modifier.fillMaxSize(), - color = MaterialTheme.colorScheme.background - ) { - Column( - horizontalAlignment = Alignment.CenterHorizontally, - modifier = Modifier.fillMaxWidth() - ) { - Text("Save to Omnivore") - var apiKey by remember { mutableStateOf("") } - OutlinedTextField( - value = apiKey, - onValueChange = { - apiKey = it - GlobalScope.launch { - setApiKey(apiKey) - } - }, - label = { Text("API Key") } - ) - Text("Get an API key from https://omnivore.app/settings/api") - } - } - } - } - } - - private suspend fun setApiKey(apiKey: String) { - AppDatastore.getInstance(base = baseContext)?.setApiKey(apiKey) - } -} diff --git a/android/SaveToOmnivore/app/src/main/java/app/omnivore/savetoomnivore/ui/theme/Color.kt b/android/SaveToOmnivore/app/src/main/java/app/omnivore/savetoomnivore/ui/theme/Color.kt deleted file mode 100644 index babd26191..000000000 --- a/android/SaveToOmnivore/app/src/main/java/app/omnivore/savetoomnivore/ui/theme/Color.kt +++ /dev/null @@ -1,11 +0,0 @@ -package app.omnivore.savetoomnivore.ui.theme - -import androidx.compose.ui.graphics.Color - -val Purple80 = Color(0xFFD0BCFF) -val PurpleGrey80 = Color(0xFFCCC2DC) -val Pink80 = Color(0xFFEFB8C8) - -val Purple40 = Color(0xFF6650a4) -val PurpleGrey40 = Color(0xFF625b71) -val Pink40 = Color(0xFF7D5260) \ No newline at end of file diff --git a/android/SaveToOmnivore/app/src/main/java/app/omnivore/savetoomnivore/ui/theme/Theme.kt b/android/SaveToOmnivore/app/src/main/java/app/omnivore/savetoomnivore/ui/theme/Theme.kt deleted file mode 100644 index 6dc8511dd..000000000 --- a/android/SaveToOmnivore/app/src/main/java/app/omnivore/savetoomnivore/ui/theme/Theme.kt +++ /dev/null @@ -1,68 +0,0 @@ -package app.omnivore.savetoomnivore.ui.theme - -import android.app.Activity -import android.os.Build -import androidx.compose.foundation.isSystemInDarkTheme -import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.darkColorScheme -import androidx.compose.material3.dynamicDarkColorScheme -import androidx.compose.material3.dynamicLightColorScheme -import androidx.compose.material3.lightColorScheme -import androidx.compose.runtime.Composable -import androidx.compose.runtime.SideEffect -import androidx.compose.ui.graphics.toArgb -import androidx.compose.ui.platform.LocalContext -import androidx.compose.ui.platform.LocalView -import androidx.core.view.ViewCompat - -private val DarkColorScheme = darkColorScheme( - primary = Purple80, - secondary = PurpleGrey80, - tertiary = Pink80 -) - -private val LightColorScheme = lightColorScheme( - primary = Purple40, - secondary = PurpleGrey40, - tertiary = Pink40 - - /* Other default colors to override - background = Color(0xFFFFFBFE), - surface = Color(0xFFFFFBFE), - onPrimary = Color.White, - onSecondary = Color.White, - onTertiary = Color.White, - onBackground = Color(0xFF1C1B1F), - onSurface = Color(0xFF1C1B1F), - */ -) - -@Composable -fun SaveToOmnivoreTheme( - darkTheme: Boolean = isSystemInDarkTheme(), - // Dynamic color is available on Android 12+ - dynamicColor: Boolean = true, - content: @Composable () -> Unit -) { - val colorScheme = when { - dynamicColor && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S -> { - val context = LocalContext.current - if (darkTheme) dynamicDarkColorScheme(context) else dynamicLightColorScheme(context) - } - darkTheme -> DarkColorScheme - else -> LightColorScheme - } - val view = LocalView.current - if (!view.isInEditMode) { - SideEffect { - (view.context as Activity).window.statusBarColor = colorScheme.primary.toArgb() - ViewCompat.getWindowInsetsController(view)?.isAppearanceLightStatusBars = darkTheme - } - } - - MaterialTheme( - colorScheme = colorScheme, - typography = Typography, - content = content - ) -} \ No newline at end of file diff --git a/android/SaveToOmnivore/app/src/main/java/app/omnivore/savetoomnivore/ui/theme/Type.kt b/android/SaveToOmnivore/app/src/main/java/app/omnivore/savetoomnivore/ui/theme/Type.kt deleted file mode 100644 index be24a8304..000000000 --- a/android/SaveToOmnivore/app/src/main/java/app/omnivore/savetoomnivore/ui/theme/Type.kt +++ /dev/null @@ -1,34 +0,0 @@ -package app.omnivore.savetoomnivore.ui.theme - -import androidx.compose.material3.Typography -import androidx.compose.ui.text.TextStyle -import androidx.compose.ui.text.font.FontFamily -import androidx.compose.ui.text.font.FontWeight -import androidx.compose.ui.unit.sp - -// Set of Material typography styles to start with -val Typography = Typography( - bodyLarge = TextStyle( - fontFamily = FontFamily.Default, - fontWeight = FontWeight.Normal, - fontSize = 16.sp, - lineHeight = 24.sp, - letterSpacing = 0.5.sp - ) - /* Other default text styles to override - titleLarge = TextStyle( - fontFamily = FontFamily.Default, - fontWeight = FontWeight.Normal, - fontSize = 22.sp, - lineHeight = 28.sp, - letterSpacing = 0.sp - ), - labelSmall = TextStyle( - fontFamily = FontFamily.Default, - fontWeight = FontWeight.Medium, - fontSize = 11.sp, - lineHeight = 16.sp, - letterSpacing = 0.5.sp - ) - */ -) \ No newline at end of file diff --git a/android/SaveToOmnivore/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/android/SaveToOmnivore/app/src/main/res/drawable-v24/ic_launcher_foreground.xml deleted file mode 100644 index 2b068d114..000000000 --- a/android/SaveToOmnivore/app/src/main/res/drawable-v24/ic_launcher_foreground.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/android/SaveToOmnivore/app/src/main/res/drawable/ic_launcher_background.xml b/android/SaveToOmnivore/app/src/main/res/drawable/ic_launcher_background.xml deleted file mode 100644 index 07d5da9cb..000000000 --- a/android/SaveToOmnivore/app/src/main/res/drawable/ic_launcher_background.xml +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/android/SaveToOmnivore/app/src/main/res/mipmap-hdpi/ic_launcher.png b/android/SaveToOmnivore/app/src/main/res/mipmap-hdpi/ic_launcher.png deleted file mode 100644 index 6b3619d2e93718e2af713065cfba361f7ace46a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2963 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 TWv7hT00000NkvXXu0mjf${|`c diff --git a/android/SaveToOmnivore/app/src/main/res/mipmap-mdpi/ic_launcher.png b/android/SaveToOmnivore/app/src/main/res/mipmap-mdpi/ic_launcher.png deleted file mode 100644 index f5837c7ba5b303f1f9b1f1caebfe2ff16519702c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1982 zcmV;v2SNCWP)K@eI|K&Y%0 zWC@FG5&>zE76d7!7y%KX3m_oS4!{3*rnlU=cS>gq<$;rYnVCEPIp_b*`L}cKfC10j zGu((a45R}EFZC-}2c=$pHll(T0p;`lYBuR37o;m?Z%|9cP`dE>+x-H}%{o}p&0>=T z=xV`h^oL>Tqn65R#+J&q{)9;f{Zi;8*U@5={_MJ-U-qcQK*kHt4sM<5>~iZBBbj zuB%yt$K&(to@wuOo;P#|0vN=?YFNVkb2@6;KZmw_okbP16DT7ol*Y#RQ*4AEX`}rq z?XwUn$&aUv%O}vOJu~U- zTvxMZM!&1dDpG)jyMBoB8JaSvVq!(1)*D^<NK+<63SYsPS!{aOWq#o_0#I`8l8l~}PtlGxo5&IT$M!#u{Y4^C zl0Sy-oi#-%rxB=Uht>F+Y#uA`EafFUXwp;u#HgM~Rr^(zc4;GgFOD7uH%{d&JBuE&IVk@J5L$oVKbwwi%j-3P-Qf(KksK=K({iY7 zYbjP8#t9OC#||2d8)~P)r-=4LMspwNoC+CMIT^5|JW0qPvr1*fL@pg*4)`DWBZrd|o@1A= zx-KrRv|@g$YAi`UMH?jKr)5UjPXHw_wi*MWwt)>RCzBJ1i_~xoM?7~EO0HTo-jqKU zr;FcsJ~KClB13(jNC16iu^h(aS_!4KeFRX)Yhz4dt%wtiRNE*a5lCR!=7V!6b!@Qs z4IAFRaw7S9oAO6;LJ&1@Eff=>c_IM-wGk3qM3@F=3i}A$Kd&>!vFTtSRF%p}ED>ls zSwbgw%^)9d5Akf|NRz#Ld3uQI^~$j#s|e_wK>#~|LkSc>X>837fIugk+6F$jc<~N^ z0FJ=tv4FOcHsE@?1X@iZJ*DeC^0i3L?^#O?hoe%6I6DZ_&5O6+iEWKSass{K?wN8*;+z5b$r%x1wUshQwoVrZBRKuW zs!YcSY+3O*57h6-S4{@kLI7CMU6T8bV)FS|}#m&tfgK zX7PB6itraT)6GWpu}}$^&5l(QDL{5UmIK9H*^C4ptIY9Y4xf8#CW&(^l2LVKs;U}A z!FPvk8yQsjUvEI9s@tAVQ!^t;!}SwP)VKS#V(01{F_xr*!vt^+#!(NegYy9Hb(9L( z3lMH^C}rC(5J5ue)J`D);I=`^sM^>-YCYMvsW<~pBY>6pmTg^rCT@EQB%DS7Ky_I; zZ>+cik#+*+WUbxX1E&%IZk;M41C!{v7h<2_n%!b_at54E0KiVboDexc0%zrD4zb7+ zNOsDbIY(e00V^(d;S7~Ku>i8iKn<`q-$(9!!_s&(I>@e1@ z$TF7C)^ZgaW=xC?Fs@sgu9CGD(hCl{SV`?Ci`vTb1K)*?2P_dl>wbOn>iGkC8@L7` zbOaH6+KNYvF79izv%eUlyYB-&(A00ssb$>;_4y7%t_Kt?) zTkQ?SH}Uy2A)GX_H!tCg2GI7|KVw3qu6y*ljk_KdXu0d5mlHtdSM Qm;e9(07*qoM6N<$f|PcoSO5S3 diff --git a/android/SaveToOmnivore/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png b/android/SaveToOmnivore/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png deleted file mode 100644 index 43475955dacfec3ad9a5dd144713157d90fdd516..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5038 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 Upv9h~Q2+n{07*qoM6N<$f=TWBP5=M^ diff --git a/android/SaveToOmnivore/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/android/SaveToOmnivore/app/src/main/res/mipmap-xhdpi/ic_launcher.png deleted file mode 100644 index 5caff3fed242142d5a9b0fb041ca12e9a4b0c82d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4453 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 diff --git a/android/SaveToOmnivore/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png b/android/SaveToOmnivore/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png deleted file mode 100644 index f70fdcea9060ebfd0a80359006f09bd861e42672..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16359 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 pImR3%sX%1yM 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

C%4 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 Upv9h~Q2+n{07*qoM6N<$f=TWBP5=M^ literal 0 HcmV?d00001 diff --git a/android/Omnivore/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/android/Omnivore/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp deleted file mode 100644 index 62b611da081676d42f6c3f78a2c91e7bcedddedb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1772 zcmVQj4N+cqN`nQhxvX7dAV-`K|Ub$-q+H-5I?Tx0g9jWxd@A|?POE8`3b8fO$T))xP* z(X?&brZw({`)WU&rdAs1iTa0x6F@PIxJ&&L|dpySV!ID|iUhjCcKz(@mE z!x@~W#3H<)4Ae(4eQJRk`Iz3<1)6^m)0b_4_TRZ+cz#eD3f8V;2r-1fE!F}W zEi0MEkTTx}8i1{`l_6vo0(Vuh0HD$I4SjZ=?^?k82R51bC)2D_{y8mi_?X^=U?2|F{Vr7s!k(AZC$O#ZMyavHhlQ7 zUR~QXuH~#o#>(b$u4?s~HLF*3IcF7023AlwAYudn0FV~|odGH^05AYPEfR)8p`i{n zwg3zPVp{+wOsxKc>)(pMupKF!Y2HoUqQ3|Yu|8lwR=?5zZuhG6J?H`bSNk_wPoM{u zSL{c@pY7+c2kck>`^q1^^gR0QB7Y?KUD{vz-uVX~;V-rW)PDcI)$_UjgVV?S?=oLR zf4}zz{#*R_{LkiJ#0RdQLNC^2Vp%JPEUvG9ra2BVZ92(p9h7Ka@!yf9(lj#}>+|u* z;^_?KWdzkM`6gqPo9;;r6&JEa)}R3X{(CWv?NvgLeOTq$cZXqf7|sPImi-7cS8DCN zGf;DVt3Am`>hH3{4-WzH43Ftx)SofNe^-#|0HdCo<+8Qs!}TZP{HH8~z5n`ExcHuT zDL1m&|DVpIy=xsLO>8k92HcmfSKhflQ0H~9=^-{#!I1g(;+44xw~=* zxvNz35vfsQE)@)Zsp*6_GjYD};Squ83<_?^SbALb{a`j<0Gn%6JY!zhp=Fg}Ga2|8 z52e1WU%^L1}15Ex0fF$e@eCT(()_P zvV?CA%#Sy08_U6VPt4EtmVQraWJX` zh=N|WQ>LgrvF~R&qOfB$!%D3cGv?;Xh_z$z7k&s4N)$WYf*k=|*jCEkO19{h_(%W4 zPuOqbCw`SeAX*R}UUsbVsgtuG?xs(#Ikx9`JZoQFz0n*7ZG@Fv@kZk`gzO$HoA9kN z8U5{-yY zvV{`&WKU2$mZeoBmiJrEdzUZAv1sRxpePdg1)F*X^Y)zp^Y*R;;z~vOv-z&)&G)JQ{m!C9cmziu1^nHA z`#`0c>@PnQ9CJKgC5NjJD8HM3|KC(g5nnCq$n0Gsu_DXk36@ql%npEye|?%RmG)

FJ$wK}0tWNB{uH;AM~i diff --git a/android/Omnivore/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/android/Omnivore/app/src/main/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..5caff3fed242142d5a9b0fb041ca12e9a4b0c82d GIT binary patch literal 4453 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 literal 0 HcmV?d00001 diff --git a/android/Omnivore/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/android/Omnivore/app/src/main/res/mipmap-xhdpi/ic_launcher.webp deleted file mode 100644 index 948a3070fe34c611c42c0d3ad3013a0dce358be0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1900 zcmV-y2b1_xNk&Fw2LJ$9MM6+kP&il$0000G0001A003VA06|PpNH75a00DqwTbm-~ zullQTcXxO9ki!OCRx^i?oR|n!<8G0=kI^!JSjFi-LL*`V;ET0H2IXfU0*i>o6o6Gy zRq6Ap5(_{XLdXcL-MzlN`ugSdZY_`jXhcENAu)N_0?GhF))9R;E`!bo9p?g?SRgw_ zEXHhFG$0{qYOqhdX<(wE4N@es3VIo$%il%6xP9gjiBri+2pI6aY4 zJbgh-Ud|V%3O!IcHKQx1FQH(_*TK;1>FQWbt^$K1zNn^cczkBs=QHCYZ8b&l!UV{K z{L0$KCf_&KR^}&2Fe|L&?1I7~pBENnCtCuH3sjcx6$c zwqkNkru);ie``q+_QI;IYLD9OV0ZxkuyBz|5<$1BH|vtey$> z5oto4=l-R-Aaq`Dk0}o9N0VrkqW_#;!u{!bJLDq%0092{Ghe=F;(kn} z+sQ@1=UlX30+2nWjkL$B^b!H2^QYO@iFc0{(-~yXj2TWz?VG{v`Jg zg}WyYnwGgn>{HFaG7E~pt=)sOO}*yd(UU-D(E&x{xKEl6OcU?pl)K%#U$dn1mDF19 zSw@l8G!GNFB3c3VVK0?uyqN&utT-D5%NM4g-3@Sii9tSXKtwce~uF zS&Jn746EW^wV~8zdQ1XC28~kXu8+Yo9p!<8h&(Q({J*4DBglPdpe4M_mD8AguZFn~ ztiuO~{6Bx?SfO~_ZV(GIboeR9~hAym{{fV|VM=77MxDrbW6`ujX z<3HF(>Zr;#*uCvC*bpoSr~C$h?_%nXps@A)=l_;({Fo#6Y1+Zv`!T5HB+)#^-Ud_; zBwftPN=d8Vx)*O1Mj+0oO=mZ+NVH*ptNDC-&zZ7Hwho6UQ#l-yNvc0Cm+2$$6YUk2D2t#vdZX-u3>-Be1u9gtTBiMB^xwWQ_rgvGpZ6(C@e23c!^K=>ai-Rqu zhqT`ZQof;9Bu!AD(i^PCbYV%yha9zuoKMp`U^z;3!+&d@Hud&_iy!O-$b9ZLcSRh? z)R|826w}TU!J#X6P%@Zh=La$I6zXa#h!B;{qfug}O%z@K{EZECu6zl)7CiNi%xti0 zB{OKfAj83~iJvmpTU|&q1^?^cIMn2RQ?jeSB95l}{DrEPTW{_gmU_pqTc)h@4T>~& zluq3)GM=xa(#^VU5}@FNqpc$?#SbVsX!~RH*5p0p@w z;~v{QMX0^bFT1!cXGM8K9FP+=9~-d~#TK#ZE{4umGT=;dfvWi?rYj;^l_Zxywze`W z^Cr{55U@*BalS}K%Czii_80e0#0#Zkhlij4-~I@}`-JFJ7$5{>LnoJSs??J8kWVl6|8A}RCGAu9^rAsfCE=2}tHwl93t0C?#+jMpvr7O3`2=tr{Hg$=HlnjVG^ewm|Js0J*kfPa6*GhtB>`fN!m#9J(sU!?(OSfzY*zS(FJ<-Vb zfAIg+`U)YaXv#sY(c--|X zEB+TVyZ%Ie4L$gi#Fc++`h6%vzsS$pjz9aLt+ZL(g;n$Dzy5=m=_TV(3H8^C{r0xd zp#a%}ht55dOq?yhwYPrtp-m1xXp;4X;)NhxxUpgP%XTLmO zcjaFva^}dP3$&sfFTIR_jC=2pHh9kpI@2(6V*GQo7Ws)`j)hd+tr@P~gR*2gO@+1? zG<`_tB+LJuF|SZ9tIec;h%}}6WClT`L>HSW?E{Hp1h^+mlbf_$9zA>!ug>NALJsO{ mU%z=YwVD?}XMya)Bp;vlyE5&E_6!fzx9pwrdz474!~g(M6R?N? diff --git a/android/Omnivore/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png b/android/Omnivore/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..f70fdcea9060ebfd0a80359006f09bd861e42672 GIT binary patch literal 16359 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 pImR3%sX%1yM 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�(p-{x$&=IACIfoAR!za)F-^da-t3#0Dycnp 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�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 VedTYEEN1tBM-iq5t&lYh{vQ|6*6jcQ literal 0 HcmV?d00001 diff --git a/android/Omnivore/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/android/Omnivore/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..0227993e3d37f491680f8c55a1a88b7fab4e02b0 GIT binary patch literal 22342 zcmZsiQ*>Bew}y9YG-#~GNgLa0Y&N!S+iA?kwr$(CZQFmobA86xxZPvTwI|;9S)sDh zA_%b9umAuch=~fxf4#f@yP+Y!p7LuJPynEUAST4G=%RJ53H2v_a6$UQTS3Z7&uXNd zjBEh2b!OBl1=`P#kP0?u34o|33=4z)AwOpx9x5iOq)=8(GO(o2TI~!GL0N!-s%~+Z z>D*y$^Zv)FGoRAn&~?Ljdi~vL#NB9u-Tq(<&zUVO_y4^V3y`PNg;YNYQ$D?MPisF+ zG5Q{#7>}g)Z}Ix&tX!Kz_Xy81D%VIwOW!OEC5|t*Sj8dwh;Sq21@p(kEByA-$_j5! zW<%c!i(Jf5sghTMq^0lk;(iOi*oD!i|AgM#@~-{tb$^2A`Fpw5dWJP}NcFcy3o+X! zo{I9Iw)KWv?&!70&B0AgpNbMbOX0UId@_9HY;jK%W^v=pa8IwI{2jvUD{IhS_#~_f zdJSVjtS6k$;K!@v&AiL1%N;D2@7`qIPPm`H-pF1p4LybEwMpYI*~4<<)!B{>Z{l4q z6&Kp?_Upcfr+o_#Pz_JJWIQu|;wP&jtoyA&OR0#k?~LAMz0G>PdU@O8p}Ld|BVs>S zE!iFzc7O~iQmtrJgv^Q>@X0IcXeSO&ydt^7=r h%Z6J?3%cKJK@QuQ_R;xP}7E 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

UmY2RIYtNPVDpE$%vda+HD#3m z&VuXJ{BK&Qe+rBa7eq}Q(bq|tn(RrJAk|ztj2(i{d>nmQnM?;HF2k&9sA6up5tmjl z7lySlzMbifH17-m-Lwa_F&e7nOH?ESi3#ckR3tsM+jsck3`oG!uMS}|eAwVXv>}qxwq?QY%QJ0}r@^;fhuUA9W z*BVl>TGo&N004@xSiwDUXUvp51sVmqO3m)=B55aPwf@0=e}cN+$-BdKxY`YrT_4)0 z_d10#i44Q*rFr8MC>*)v$EJvz``(pb{e&*6k+b zsMz%($|1+8hn8c2?P(l@;Rb&CsZeYoCI3?2!LqjbwPXW3z4G$Qfj=cT5Yb%vY0(AX oeb?AaKtwrnc|$|zzw9vfvn^aJJ!zd)XFXqqy0000001=f@-~a#s diff --git a/android/Omnivore/app/src/main/res/values/ic_launcher_background.xml b/android/Omnivore/app/src/main/res/values/ic_launcher_background.xml new file mode 100644 index 000000000..c5d5899fd --- /dev/null +++ b/android/Omnivore/app/src/main/res/values/ic_launcher_background.xml @@ -0,0 +1,4 @@ + + + #FFFFFF + \ No newline at end of file diff --git a/android/Omnivore/app/src/main/res/values/strings.xml b/android/Omnivore/app/src/main/res/values/strings.xml index 90a5ab700..78d5305f7 100644 --- a/android/Omnivore/app/src/main/res/values/strings.xml +++ b/android/Omnivore/app/src/main/res/values/strings.xml @@ -1,4 +1,4 @@ - Omnivore + Save to Omnivore 590528454690-ovh9ku5r3fojgr1pp5kgaimr43o96btb.apps.googleusercontent.com From fd69fd8aa70ccd59f0ca731df04a69c65dbc2d9a Mon Sep 17 00:00:00 2001 From: Jackson Harper Date: Fri, 19 Aug 2022 18:03:06 +0800 Subject: [PATCH 26/28] Use navigation to have a separate splash and login view --- android/Omnivore/app/build.gradle | 5 ++ .../java/app/omnivore/omnivore/GoogleAuth.kt | 13 +++- .../omnivore/omnivore/GoogleSignInButton.kt | 70 +++++++++++++++++ .../app/omnivore/omnivore/LoginViewModel.kt | 4 +- .../app/omnivore/omnivore/MainActivity.kt | 10 +-- .../main/java/app/omnivore/omnivore/Routes.kt | 6 ++ .../java/app/omnivore/omnivore/SaveContent.kt | 1 + .../java/app/omnivore/omnivore/ScreenMain.kt | 22 ++++++ .../omnivore/omnivore/screen/EmailLogin.kt | 31 ++++++++ .../omnivore/omnivore/screen/SplashPage.kt | 78 +++++++++++++++++++ .../src/main/res/drawable/ic_logo_google.xml | 22 ++++++ .../app/src/main/res/values/colors.xml | 5 -- .../app/src/main/res/values/strings.xml | 2 +- .../app/src/main/res/values/themes.xml | 4 +- 14 files changed, 254 insertions(+), 19 deletions(-) create mode 100644 android/Omnivore/app/src/main/java/app/omnivore/omnivore/GoogleSignInButton.kt create mode 100644 android/Omnivore/app/src/main/java/app/omnivore/omnivore/Routes.kt create mode 100644 android/Omnivore/app/src/main/java/app/omnivore/omnivore/ScreenMain.kt create mode 100644 android/Omnivore/app/src/main/java/app/omnivore/omnivore/screen/EmailLogin.kt create mode 100644 android/Omnivore/app/src/main/java/app/omnivore/omnivore/screen/SplashPage.kt create mode 100644 android/Omnivore/app/src/main/res/drawable/ic_logo_google.xml diff --git a/android/Omnivore/app/build.gradle b/android/Omnivore/app/build.gradle index 106ef9db4..86c1239ca 100644 --- a/android/Omnivore/app/build.gradle +++ b/android/Omnivore/app/build.gradle @@ -49,6 +49,8 @@ android { } dependencies { + def nav_version = "2.5.1" + implementation 'androidx.core:core-ktx:1.7.0' implementation "androidx.compose.ui:ui:$compose_version" implementation "androidx.compose.material:material:$compose_version" @@ -56,6 +58,9 @@ dependencies { implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.3.1' implementation 'androidx.activity:activity-compose:1.3.1' implementation 'androidx.appcompat:appcompat:1.4.1' + implementation 'com.google.android.gms:play-services-base:17.6.0' + + implementation "androidx.navigation:navigation-compose:$nav_version" testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.3' diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/GoogleAuth.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/GoogleAuth.kt index dcdaffe44..ba8b9eae0 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/GoogleAuth.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/GoogleAuth.kt @@ -4,10 +4,12 @@ import android.app.Activity import androidx.activity.compose.rememberLauncherForActivityResult import androidx.activity.result.ActivityResult import androidx.activity.result.contract.ActivityResultContracts +import androidx.compose.material.ExperimentalMaterialApi import androidx.compose.material3.Button import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import com.google.android.gms.auth.api.signin.GoogleSignIn import com.google.android.gms.auth.api.signin.GoogleSignInAccount @@ -15,6 +17,7 @@ import com.google.android.gms.auth.api.signin.GoogleSignInOptions import com.google.android.gms.tasks.Task +@OptIn(ExperimentalMaterialApi::class) @Composable fun GoogleAuthButton(viewModel: LoginViewModel) { val context = LocalContext.current @@ -37,12 +40,14 @@ fun GoogleAuthButton(viewModel: LoginViewModel) { } } - Button( + GoogleSignInButton( + text = "Continue with Google", + loadingText = "Signing in...", + isLoading = viewModel.isLoading, + icon = painterResource(id = R.drawable.ic_logo_google), onClick = { val googleSignIn = GoogleSignIn.getClient(context, signInOptions) startForResult.launch(googleSignIn.signInIntent) } - ) { - Text(text = "Continue With Google") - } + ) } diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/GoogleSignInButton.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/GoogleSignInButton.kt new file mode 100644 index 000000000..e80f8c0ce --- /dev/null +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/GoogleSignInButton.kt @@ -0,0 +1,70 @@ +package app.omnivore.omnivore + +import androidx.compose.foundation.BorderStroke +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.* +import androidx.compose.material.* +import androidx.compose.material.Surface +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.Shape + +import androidx.compose.ui.graphics.painter.Painter +import androidx.compose.ui.unit.dp + +@ExperimentalMaterialApi +@Composable +fun GoogleSignInButton( + text: String, + loadingText: String = "Signing in...", + icon: Painter, + isLoading: Boolean = false, + shape: Shape = Shapes().medium, + borderColor: Color = Color.LightGray, + backgroundColor: Color = MaterialTheme.colors.surface, + progressIndicatorColor: Color = MaterialTheme.colors.primary, + onClick: () -> Unit +) { + Surface( + modifier = Modifier.clickable( + enabled = !isLoading, + onClick = onClick + ), + shape = shape, + border = BorderStroke(width = 1.dp, color = borderColor), + color = backgroundColor + ) { + Row( + modifier = Modifier + .padding( + start = 12.dp, + end = 16.dp, + top = 12.dp, + bottom = 12.dp + ), + verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = Arrangement.Center, + ) { + Icon( + painter = icon, + contentDescription = "SignInButton", + tint = Color.Unspecified + ) + Spacer(modifier = Modifier.width(8.dp)) + + Text(text = if (isLoading) loadingText else text) + if (isLoading) { + Spacer(modifier = Modifier.width(16.dp)) + CircularProgressIndicator( + modifier = Modifier + .height(16.dp) + .width(16.dp), + strokeWidth = 2.dp, + color = progressIndicatorColor + ) + } + } + } +} diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/LoginViewModel.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/LoginViewModel.kt index d5f788438..14db1873b 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/LoginViewModel.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/LoginViewModel.kt @@ -2,9 +2,11 @@ package app.omnivore.omnivore import android.content.ContentValues import android.util.Log +import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.setValue +import androidx.compose.ui.platform.LocalUriHandler import androidx.lifecycle.* import com.google.android.gms.auth.api.signin.GoogleSignInAccount import com.google.android.gms.common.api.ApiException @@ -106,6 +108,4 @@ class LoginViewModel @Inject constructor( } } } - - } diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/MainActivity.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/MainActivity.kt index 3723d293a..fbdd52768 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/MainActivity.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/MainActivity.kt @@ -52,9 +52,10 @@ class MainActivity : ComponentActivity() { setContent { OmnivoreTheme { // A surface container using the 'background' color from the theme - Surface(modifier = Modifier.fillMaxSize(), color = MaterialTheme.colorScheme.background) { - WelcomeView(viewModel) - } + ScreenMain(viewModel = viewModel) +// Surface(modifier = Modifier.fillMaxSize(), color = MaterialTheme.colorScheme.background) { +// WelcomeView(viewModel) +// } } } @@ -91,7 +92,6 @@ fun LoginView(viewModel: LoginViewModel) { horizontalAlignment = Alignment.CenterHorizontally, modifier = Modifier .background(MaterialTheme.colorScheme.background) - .fillMaxSize() ) { if (isGoogleAuthAvailable) { GoogleAuthButton(viewModel) @@ -186,7 +186,7 @@ fun LoginFields( verticalArrangement = Arrangement.spacedBy(25.dp), horizontalAlignment = Alignment.CenterHorizontally ) { - Text("Please login") + Text("Never miss a great read") OutlinedTextField( value = email, diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/Routes.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/Routes.kt new file mode 100644 index 000000000..c6ca342c8 --- /dev/null +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/Routes.kt @@ -0,0 +1,6 @@ +package app.omnivore.omnivore + +sealed class Routes(val route: String) { + object Splash : Routes("Splash") + object EmailLogin : Routes("EmailLogin") +} diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/SaveContent.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/SaveContent.kt index e6697d94a..4a569178b 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/SaveContent.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/SaveContent.kt @@ -8,6 +8,7 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.material.* +import androidx.compose.material.MaterialTheme.colors import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.unit.dp import kotlinx.coroutines.launch diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ScreenMain.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ScreenMain.kt new file mode 100644 index 000000000..a2248f02e --- /dev/null +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ScreenMain.kt @@ -0,0 +1,22 @@ +package app.omnivore.omnivore + +import androidx.compose.runtime.Composable +import androidx.navigation.compose.NavHost +import androidx.navigation.compose.composable +import androidx.navigation.compose.rememberNavController +import app.omnivore.omnivore.screen.EmailLoginPage +import app.omnivore.omnivore.screen.SplashPage + +@Composable +fun ScreenMain(viewModel: LoginViewModel){ + val navController = rememberNavController() + + NavHost(navController = navController, startDestination = Routes.Splash.route) { + composable(Routes.Splash.route) { + SplashPage(viewModel = viewModel, navController = navController) + } + composable(Routes.EmailLogin.route) { + EmailLoginPage(viewModel = viewModel, navController = navController) + } + } +} diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/screen/EmailLogin.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/screen/EmailLogin.kt new file mode 100644 index 000000000..8d2784eb8 --- /dev/null +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/screen/EmailLogin.kt @@ -0,0 +1,31 @@ +package app.omnivore.omnivore.screen + +import android.content.Intent +import android.net.Uri +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.navigationBarsPadding +import androidx.compose.material3.MaterialTheme +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.navigation.NavHostController +import app.omnivore.omnivore.EmailLoginView +import app.omnivore.omnivore.LoginViewModel + + +@Composable +fun EmailLoginPage(viewModel: LoginViewModel, navController: NavHostController) { + Column( + verticalArrangement = Arrangement.Center, + horizontalAlignment = Alignment.CenterHorizontally, + modifier = Modifier + .background(MaterialTheme.colorScheme.background) + .fillMaxSize() + .navigationBarsPadding() + ) { + EmailLoginView(viewModel) + } +} diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/screen/SplashPage.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/screen/SplashPage.kt new file mode 100644 index 000000000..8e79e6930 --- /dev/null +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/screen/SplashPage.kt @@ -0,0 +1,78 @@ +package app.omnivore.omnivore.screen + +import android.content.Intent +import android.net.Uri +import androidx.compose.foundation.background +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.navigationBarsPadding +import androidx.compose.foundation.text.ClickableText +import androidx.compose.material3.Button +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.remember +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.platform.LocalUriHandler +import androidx.compose.ui.text.AnnotatedString +import androidx.core.content.ContextCompat.startActivity +import androidx.lifecycle.viewModelScope +import androidx.navigation.NavHostController +import app.omnivore.omnivore.EmailLoginView +import app.omnivore.omnivore.GoogleAuthButton +import app.omnivore.omnivore.LoginViewModel +import app.omnivore.omnivore.Routes +import com.google.android.gms.common.GoogleApiAvailability +import kotlinx.coroutines.launch + +@Composable +fun SplashPage(viewModel: LoginViewModel, navController: NavHostController) { + val isGoogleAuthAvailable: Boolean = GoogleApiAvailability + .getInstance() + .isGooglePlayServicesAvailable(LocalContext.current) == 0 + + Column( + verticalArrangement = Arrangement.Center, + horizontalAlignment = Alignment.CenterHorizontally, + modifier = Modifier + .background(MaterialTheme.colorScheme.background) + .fillMaxSize() + .navigationBarsPadding() + ) { + Text("Never miss a great read") + MoreInfoButton() + + if (isGoogleAuthAvailable) { + GoogleAuthButton(viewModel) + } + + ContinueWithEmailButton(navController) + } +} + +@Composable +fun MoreInfoButton() { + val context = LocalContext.current + val intent = remember { Intent(Intent.ACTION_VIEW, Uri.parse("https://omnivore.app/about")) } + + ClickableText( + text = AnnotatedString("Learn More ->"), + onClick = { + context.startActivity(intent) + } + ) +} + +@Composable +fun ContinueWithEmailButton(navController: NavHostController) { + ClickableText( + text = AnnotatedString("Continue with Email ->"), + onClick = { + navController.navigate(Routes.EmailLogin.route) + } + ) +} diff --git a/android/Omnivore/app/src/main/res/drawable/ic_logo_google.xml b/android/Omnivore/app/src/main/res/drawable/ic_logo_google.xml new file mode 100644 index 000000000..d9425d95c --- /dev/null +++ b/android/Omnivore/app/src/main/res/drawable/ic_logo_google.xml @@ -0,0 +1,22 @@ + + + + + + diff --git a/android/Omnivore/app/src/main/res/values/colors.xml b/android/Omnivore/app/src/main/res/values/colors.xml index 234f693f1..ee4d3d2e0 100644 --- a/android/Omnivore/app/src/main/res/values/colors.xml +++ b/android/Omnivore/app/src/main/res/values/colors.xml @@ -1,10 +1,5 @@ - #FFBB86FC - #FF6200EE - #FF3700B3 - #FF03DAC5 - #FF018786 #FF000000 #FFFFFFFF #F7F7F7 diff --git a/android/Omnivore/app/src/main/res/values/strings.xml b/android/Omnivore/app/src/main/res/values/strings.xml index 78d5305f7..90a5ab700 100644 --- a/android/Omnivore/app/src/main/res/values/strings.xml +++ b/android/Omnivore/app/src/main/res/values/strings.xml @@ -1,4 +1,4 @@ - Save to Omnivore + Omnivore 590528454690-ovh9ku5r3fojgr1pp5kgaimr43o96btb.apps.googleusercontent.com diff --git a/android/Omnivore/app/src/main/res/values/themes.xml b/android/Omnivore/app/src/main/res/values/themes.xml index 0b211c476..f5b5ca333 100644 --- a/android/Omnivore/app/src/main/res/values/themes.xml +++ b/android/Omnivore/app/src/main/res/values/themes.xml @@ -1,8 +1,8 @@ -

K7UpUK$>l@ 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 E2O(~oYXATM diff --git a/android/SaveToOmnivore/gradle/wrapper/gradle-wrapper.properties b/android/SaveToOmnivore/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index 9e79af52e..000000000 --- a/android/SaveToOmnivore/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,6 +0,0 @@ -#Tue Jul 19 16:31:46 PDT 2022 -distributionBase=GRADLE_USER_HOME -distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-bin.zip -distributionPath=wrapper/dists -zipStorePath=wrapper/dists -zipStoreBase=GRADLE_USER_HOME diff --git a/android/SaveToOmnivore/gradlew b/android/SaveToOmnivore/gradlew deleted file mode 100755 index 4f906e0c8..000000000 --- a/android/SaveToOmnivore/gradlew +++ /dev/null @@ -1,185 +0,0 @@ -#!/usr/bin/env sh - -# -# Copyright 2015 the original author or authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -############################################################################## -## -## Gradle start up script for UN*X -## -############################################################################## - -# Attempt to set APP_HOME -# Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi -done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null - -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" - -warn () { - echo "$*" -} - -die () { - echo - echo "$*" - echo - exit 1 -} - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -nonstop=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; - NONSTOP* ) - nonstop=true - ;; -esac - -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar - - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" - else - JAVACMD="$JAVA_HOME/bin/java" - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD="java" - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." -fi - -# Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi -fi - -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi - -# For Cygwin or MSYS, switch paths to Windows format before running java -if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi - # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" - fi - i=`expr $i + 1` - done - case $i in - 0) set -- ;; - 1) set -- "$args0" ;; - 2) set -- "$args0" "$args1" ;; - 3) set -- "$args0" "$args1" "$args2" ;; - 4) set -- "$args0" "$args1" "$args2" "$args3" ;; - 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac -fi - -# Escape application args -save () { - for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done - echo " " -} -APP_ARGS=`save "$@"` - -# Collect all arguments for the java command, following the shell quoting and substitution rules -eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" - -exec "$JAVACMD" "$@" diff --git a/android/SaveToOmnivore/gradlew.bat b/android/SaveToOmnivore/gradlew.bat deleted file mode 100644 index ac1b06f93..000000000 --- a/android/SaveToOmnivore/gradlew.bat +++ /dev/null @@ -1,89 +0,0 @@ -@rem -@rem Copyright 2015 the original author or authors. -@rem -@rem Licensed under the Apache License, Version 2.0 (the "License"); -@rem you may not use this file except in compliance with the License. -@rem You may obtain a copy of the License at -@rem -@rem https://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, software -@rem distributed under the License is distributed on an "AS IS" BASIS, -@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@rem See the License for the specific language governing permissions and -@rem limitations under the License. -@rem - -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Resolve any "." and ".." in APP_HOME to make it shorter. -for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto execute - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto execute - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/android/SaveToOmnivore/settings.gradle b/android/SaveToOmnivore/settings.gradle deleted file mode 100644 index 40d2999e2..000000000 --- a/android/SaveToOmnivore/settings.gradle +++ /dev/null @@ -1,16 +0,0 @@ -pluginManagement { - repositories { - gradlePluginPortal() - google() - mavenCentral() - } -} -dependencyResolutionManagement { - repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) - repositories { - google() - mavenCentral() - } -} -rootProject.name = "SaveToOmnivore" -include ':app' From 1e03cc599a445fb7539f182d9ab7ecfa15a8ba3f Mon Sep 17 00:00:00 2001 From: Jackson Harper Date: Thu, 18 Aug 2022 18:38:26 +0800 Subject: [PATCH 18/28] Remove close button, simplify code a bit --- .../java/app/omnivore/omnivore/CloseButton.kt | 47 ------------------- .../java/app/omnivore/omnivore/SaveContent.kt | 27 ++++++----- .../omnivore/omnivore/SaveSheetActivity.kt | 13 +---- 3 files changed, 16 insertions(+), 71 deletions(-) delete mode 100644 android/Omnivore/app/src/main/java/app/omnivore/omnivore/CloseButton.kt diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/CloseButton.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/CloseButton.kt deleted file mode 100644 index aabee8b6b..000000000 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/CloseButton.kt +++ /dev/null @@ -1,47 +0,0 @@ -package app.omnivore.omnivore - -import androidx.compose.foundation.layout.Box -import androidx.compose.foundation.layout.PaddingValues -import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.layout.size -import androidx.compose.foundation.shape.CircleShape -import androidx.compose.material.Button -import androidx.compose.material.ButtonDefaults -import androidx.compose.material.Icon -import androidx.compose.runtime.Composable -import androidx.compose.ui.Alignment -import androidx.compose.ui.Modifier -import androidx.compose.ui.res.colorResource -import androidx.compose.ui.res.painterResource -import androidx.compose.ui.unit.dp -import app.omnivore.omnivore.R - -typealias OnClickedClose = () -> Unit - -@Composable -fun CloseButton( - modifier: Modifier = Modifier, - onClickedClose: OnClickedClose -) { - Box( - modifier.then( - Modifier.padding(end = 13.dp, top = 13.dp) - ) - ) { - Button( - onClick = { onClickedClose() }, - modifier = Modifier.size(26.dp), - shape = CircleShape, - elevation = ButtonDefaults.elevation(defaultElevation = 0.dp, pressedElevation = 0.dp), - contentPadding = PaddingValues(0.dp), - colors = ButtonDefaults.outlinedButtonColors(backgroundColor = colorResource(id = R.color.cloud)) - ) { - Icon( - modifier = Modifier.align(Alignment.CenterVertically), - painter = painterResource(id = R.drawable.ic_x_2), - contentDescription = "CLOSE_BUTTON_DESCRIPTION", - tint = colorResource(id = R.color.gray_B7B7B7) - ) - } - } -} diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/SaveContent.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/SaveContent.kt index c1dce23f0..ab1495bd1 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/SaveContent.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/SaveContent.kt @@ -1,19 +1,22 @@ package app.omnivore.omnivore -import android.view.Surface import androidx.compose.foundation.background import androidx.compose.foundation.layout.* import androidx.compose.material.MaterialTheme import androidx.compose.material.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment -import androidx.compose.ui.Alignment.Companion.CenterHorizontally import androidx.compose.ui.Modifier import androidx.compose.material.* +import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.unit.dp +import kotlinx.coroutines.launch @Composable -fun SaveContent(extractedText: String?, modifier: Modifier, button: (@Composable () -> Unit)? = null) { +@OptIn(ExperimentalMaterialApi::class) +fun SaveContent(extractedText: String?, modalBottomSheetState: ModalBottomSheetState, modifier: Modifier) { + val coroutineScope = rememberCoroutineScope() + Surface(modifier = Modifier.fillMaxSize(), color = MaterialTheme.colors.background) { Column( verticalArrangement = Arrangement.Center, @@ -25,17 +28,17 @@ fun SaveContent(extractedText: String?, modifier: Modifier, button: (@Composable val authToken = "authToken" Text(text = extractedText ?: "no text extracted") - Spacer(modifier = Modifier.height(16.dp)) - Text(text = authToken ?: "no auth token") + Spacer(modifier = Modifier.height(16.dp)) + Text(text = authToken ?: "no auth token") + Button(onClick = { + coroutineScope.launch { + modalBottomSheetState.hide() + } + }) { + Text(text = "Dismiss") + } } - } - Column { - button?.let { - Box(modifier = Modifier.align(CenterHorizontally)) { - button() - } - } } } diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/SaveSheetActivity.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/SaveSheetActivity.kt index ba2b1422e..71443102d 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/SaveSheetActivity.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/SaveSheetActivity.kt @@ -19,7 +19,6 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.dp -import androidx.core.view.WindowCompat import dagger.hilt.android.AndroidEntryPoint import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.launch @@ -120,16 +119,6 @@ abstract class SaveSheetActivity: AppCompatActivity() { .width(80.dp) .clip(RoundedCornerShape(50.dp)) ) - - CloseButton( - modifier = Modifier - .align(TopEnd) - .padding(10.dp) - ) { - coroutineScope.launch { - modalBottomSheetState.hide() - } - } } } @@ -175,7 +164,7 @@ abstract class SaveSheetActivity: AppCompatActivity() { onExit: () -> Unit? ) { Box(modifier = Modifier.height(300.dp).background(Color.White)) { - SaveContent(extractedText, modifier = Modifier.fillMaxSize()) + SaveContent(extractedText, modalBottomSheetState, modifier = Modifier.fillMaxSize()) } } From 7c2fa1554f0da6699308ea53be08a4dc570fb522 Mon Sep 17 00:00:00 2001 From: Jackson Harper Date: Thu, 18 Aug 2022 18:52:33 +0800 Subject: [PATCH 19/28] Remove unused import --- .../app/src/main/java/app/omnivore/omnivore/SaveSheetActivity.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/SaveSheetActivity.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/SaveSheetActivity.kt index 71443102d..2ce79957c 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/SaveSheetActivity.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/SaveSheetActivity.kt @@ -14,7 +14,6 @@ import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.* import androidx.compose.runtime.* import androidx.compose.ui.Alignment.Companion.TopCenter -import androidx.compose.ui.Alignment.Companion.TopEnd import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color From d9d50883c31a4130ce7fc3b7505b0547588f4df4 Mon Sep 17 00:00:00 2001 From: Jackson Harper Date: Thu, 18 Aug 2022 19:20:26 +0800 Subject: [PATCH 20/28] Pass viewModel into the SaveContent view --- .../java/app/omnivore/omnivore/SaveContent.kt | 12 +++----- .../omnivore/omnivore/SaveSheetActivity.kt | 6 ++-- .../app/omnivore/omnivore/SaveViewModel.kt | 28 ++++++++++++++++++- 3 files changed, 34 insertions(+), 12 deletions(-) diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/SaveContent.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/SaveContent.kt index ab1495bd1..e6697d94a 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/SaveContent.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/SaveContent.kt @@ -14,23 +14,19 @@ import kotlinx.coroutines.launch @Composable @OptIn(ExperimentalMaterialApi::class) -fun SaveContent(extractedText: String?, modalBottomSheetState: ModalBottomSheetState, modifier: Modifier) { +fun SaveContent(viewModel: SaveViewModel, modalBottomSheetState: ModalBottomSheetState, modifier: Modifier) { val coroutineScope = rememberCoroutineScope() Surface(modifier = Modifier.fillMaxSize(), color = MaterialTheme.colors.background) { Column( - verticalArrangement = Arrangement.Center, + verticalArrangement = Arrangement.SpaceBetween, horizontalAlignment = Alignment.CenterHorizontally, modifier = Modifier .background(MaterialTheme.colors.background) .fillMaxSize() + .padding(top = 48.dp, bottom = 32.dp) ) { - val authToken = "authToken" - - Text(text = extractedText ?: "no text extracted") - Spacer(modifier = Modifier.height(16.dp)) - Text(text = authToken ?: "no auth token") - + Text(text = viewModel.message ?: "Saving") Button(onClick = { coroutineScope.launch { modalBottomSheetState.hide() diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/SaveSheetActivity.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/SaveSheetActivity.kt index 2ce79957c..1b8f9b2ed 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/SaveSheetActivity.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/SaveSheetActivity.kt @@ -65,7 +65,7 @@ abstract class SaveSheetActivity: AppCompatActivity() { sheetState = modalBottomSheetState, sheetContent = { BottomSheetUI(coroutineScope, modalBottomSheetState) { - ScreenContent(extractedText, coroutineScope, modalBottomSheetState) { + ScreenContent(viewModel, coroutineScope, modalBottomSheetState) { onFinish(coroutineScope, modalBottomSheetState) } } @@ -157,13 +157,13 @@ abstract class SaveSheetActivity: AppCompatActivity() { @Composable fun ScreenContent( - extractedText: String?, + viewModel: SaveViewModel, coroutineScope: CoroutineScope, modalBottomSheetState: ModalBottomSheetState, onExit: () -> Unit? ) { Box(modifier = Modifier.height(300.dp).background(Color.White)) { - SaveContent(extractedText, modalBottomSheetState, modifier = Modifier.fillMaxSize()) + SaveContent(viewModel, modalBottomSheetState, modifier = Modifier.fillMaxSize()) } } diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/SaveViewModel.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/SaveViewModel.kt index f17d4dd33..0324dc4f4 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/SaveViewModel.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/SaveViewModel.kt @@ -2,6 +2,9 @@ package app.omnivore.omnivore import android.content.ContentValues import android.util.Log +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.setValue import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import app.omnivore.omnivore.graphql.generated.SaveUrlMutation @@ -17,13 +20,28 @@ import javax.inject.Inject class SaveViewModel @Inject constructor( private val datastoreRepo: DatastoreRepository ): ViewModel() { + var isLoading by mutableStateOf(false) + private set + + var message by mutableStateOf(null) + private set + fun getAuthToken(): String? = runBlocking { datastoreRepo.getString(DatastoreKeys.omnivoreAuthToken) } fun saveURL(url: String) { viewModelScope.launch { - val apiKey = getAuthToken() ?: "" + isLoading = true + message = "Saving to Omnivore..." + + val apiKey = getAuthToken() + + if (apiKey == null) { + message = "You are not logged in. Please login before saving." + isLoading = false + return@launch + } val apolloClient = ApolloClient.Builder() .serverUrl("${Constants.demoProdURL}/api/graphql") @@ -40,7 +58,15 @@ class SaveViewModel @Inject constructor( ) ).execute() + isLoading = false + val success = (response.data?.saveUrl?.onSaveSuccess?.url != null) + message = if (success) { + "Page Saved" + } else { + "There was an error saving your page" + } + Log.d(ContentValues.TAG, "Saved URL?: ${success.toString()}") } } From d5233f24ec4d92574af65799a49d2f397fd026d6 Mon Sep 17 00:00:00 2001 From: Satindar Dhillon Date: Thu, 18 Aug 2022 08:44:41 -0700 Subject: [PATCH 21/28] remove unused code --- .../omnivore/omnivore/DatastoreRepository.kt | 4 - .../app/omnivore/omnivore/LoginViewModel.kt | 2 - .../app/omnivore/omnivore/MainActivity.kt | 1 - .../app/omnivore/omnivore/RESTNetworker.kt | 1 - .../app/omnivore/omnivore/SaveActivity.kt | 154 ------------------ .../omnivore/omnivore/SaveSheetActivity.kt | 17 +- .../app/omnivore/omnivore/SaveViewModel.kt | 2 +- .../app/omnivore/omnivore/ui/theme/Theme.kt | 19 ++- 8 files changed, 17 insertions(+), 183 deletions(-) delete mode 100644 android/Omnivore/app/src/main/java/app/omnivore/omnivore/SaveActivity.kt diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/DatastoreRepository.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/DatastoreRepository.kt index ea22d4c38..7392ffeb9 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/DatastoreRepository.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/DatastoreRepository.kt @@ -2,15 +2,11 @@ package app.omnivore.omnivore import android.content.Context import androidx.datastore.core.DataStore -import androidx.datastore.dataStore import androidx.datastore.preferences.core.* import androidx.datastore.preferences.preferencesDataStore -import androidx.lifecycle.asLiveData import kotlinx.coroutines.flow.Flow -import kotlinx.coroutines.flow.catch import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.map -import java.io.IOException import javax.inject.Inject interface DatastoreRepository { diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/LoginViewModel.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/LoginViewModel.kt index e9102680a..8a7726991 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/LoginViewModel.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/LoginViewModel.kt @@ -1,7 +1,5 @@ package app.omnivore.omnivore -import android.content.ContentValues -import android.util.Log import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.setValue diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/MainActivity.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/MainActivity.kt index 2a57287eb..93beca3e0 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/MainActivity.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/MainActivity.kt @@ -12,7 +12,6 @@ import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.* import androidx.compose.foundation.text.KeyboardActions import androidx.compose.foundation.text.KeyboardOptions -//import androidx.compose.material.* import androidx.compose.material3.* import androidx.compose.runtime.* import androidx.compose.runtime.saveable.rememberSaveable diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/RESTNetworker.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/RESTNetworker.kt index 21c91fc8e..62a838665 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/RESTNetworker.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/RESTNetworker.kt @@ -7,7 +7,6 @@ import retrofit2.http.Body import retrofit2.http.Headers import retrofit2.http.POST - data class EmailAuthPayload( val authCookieString: String?, val authToken: String?, diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/SaveActivity.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/SaveActivity.kt deleted file mode 100644 index 9f6730124..000000000 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/SaveActivity.kt +++ /dev/null @@ -1,154 +0,0 @@ -package app.omnivore.omnivore - -import android.content.Intent -import android.os.Bundle -import androidx.activity.ComponentActivity -import androidx.activity.compose.setContent -import androidx.activity.viewModels -import androidx.compose.foundation.background -import androidx.compose.foundation.layout.* -import androidx.compose.foundation.lazy.LazyColumn -import androidx.compose.material.* -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Add -import androidx.compose.runtime.Composable -import androidx.compose.runtime.rememberCoroutineScope -import androidx.compose.ui.Alignment -import androidx.compose.ui.Modifier -import androidx.compose.ui.unit.dp -import app.omnivore.omnivore.ui.theme.OmnivoreTheme -import dagger.hilt.android.AndroidEntryPoint -import kotlinx.coroutines.launch - -@AndroidEntryPoint -class SaveActivity : ComponentActivity() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - - val viewModel: SaveViewModel by viewModels() - var extractedText: String? = null - val authToken = viewModel.getAuthToken() - - when (intent?.action) { - Intent.ACTION_SEND -> { - if (intent.type?.startsWith("text/plain") == true) { - intent.getStringExtra(Intent.EXTRA_TEXT)?.let { - extractedText = it - viewModel.saveURL(it) - } - } - - if (intent.type?.startsWith("text/html") == true) { - intent.getStringExtra(Intent.EXTRA_HTML_TEXT)?.let { - extractedText = it - } - } - } - else -> { - // Handle other intents, such as being started from the home screen - } - } - - setContent { - OmnivoreTheme { -//dialog() -// saveBottomModal() - Surface(modifier = Modifier.fillMaxSize(), color = MaterialTheme.colors.background) { - Column( - verticalArrangement = Arrangement.Center, - horizontalAlignment = Alignment.CenterHorizontally, - modifier = Modifier - .background(MaterialTheme.colors.background) - .fillMaxSize() - ) { - Text(text = extractedText ?: "no text extracted") - Spacer(modifier = Modifier.height(16.dp)) - Text(text = authToken ?: "no auth token") - } - } - } - } - } -} - -@Composable -fun dialog() { - AlertDialog( - onDismissRequest = { - // Dismiss the dialog when the user clicks outside the dialog or on the back - // button. If you want to disable that functionality, simply use an empty - // onCloseRequest. -// openDialog.value = false - }, - title = { - Text(text = "Dialog Title") - }, - text = { - Text("Here is a text ") - }, - confirmButton = { - Button( - onClick = { -// openDialog.value = false - }) { - Text("This is the Confirm Button") - } - }, - dismissButton = { - Button( - onClick = { -// openDialog.value = false - }) { - Text("This is the dismiss Button") - } - } - ) -} - -@OptIn(ExperimentalMaterialApi::class) -@Composable -fun saveBottomModal() { - val scaffoldState = rememberScaffoldState() - val modalBottomSheetState = rememberModalBottomSheetState(ModalBottomSheetValue.HalfExpanded) - val coroutineScope = rememberCoroutineScope() - - Scaffold( - scaffoldState = scaffoldState, - ) { innerPadding -> - Box(modifier = Modifier.padding(innerPadding)) { - Button(onClick = { - coroutineScope.launch { - modalBottomSheetState.show() - } - }) { - Text(text = "Show") - } - } - } - - ModalBottomSheetLayout( - sheetState = modalBottomSheetState, - sheetContent = { - LazyColumn { - item { - TextButton(modifier = Modifier.fillMaxWidth(), onClick = { - // do something - }) { - Row { - Icon( - imageVector = Icons.Filled.Add, - // painterResource(id = R.drawable.ic_baseline_add_24), - contentDescription = "New Album" - ) - Text("New Album") - Spacer(modifier = Modifier.weight(1f)) - } - } - } - } - } - ) { - // - } -} - diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/SaveSheetActivity.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/SaveSheetActivity.kt index 1b8f9b2ed..521e5c3df 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/SaveSheetActivity.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/SaveSheetActivity.kt @@ -32,7 +32,6 @@ abstract class SaveSheetActivity: AppCompatActivity() { val viewModel: SaveViewModel by viewModels() var extractedText: String? = null - val authToken = viewModel.getAuthToken() when (intent?.action) { Intent.ACTION_SEND -> { @@ -64,10 +63,8 @@ abstract class SaveSheetActivity: AppCompatActivity() { sheetBackgroundColor = Color.Transparent, sheetState = modalBottomSheetState, sheetContent = { - BottomSheetUI(coroutineScope, modalBottomSheetState) { - ScreenContent(viewModel, coroutineScope, modalBottomSheetState) { - onFinish(coroutineScope, modalBottomSheetState) - } + BottomSheetUI { + ScreenContent(viewModel, modalBottomSheetState) } } ) {} @@ -94,11 +91,7 @@ abstract class SaveSheetActivity: AppCompatActivity() { } @Composable - private fun BottomSheetUI( - coroutineScope: CoroutineScope, - modalBottomSheetState: ModalBottomSheetState, - content: @Composable () -> Unit - ) { + private fun BottomSheetUI(content: @Composable () -> Unit) { Box( modifier = Modifier .wrapContentHeight() @@ -158,9 +151,7 @@ abstract class SaveSheetActivity: AppCompatActivity() { @Composable fun ScreenContent( viewModel: SaveViewModel, - coroutineScope: CoroutineScope, - modalBottomSheetState: ModalBottomSheetState, - onExit: () -> Unit? + modalBottomSheetState: ModalBottomSheetState ) { Box(modifier = Modifier.height(300.dp).background(Color.White)) { SaveContent(viewModel, modalBottomSheetState, modifier = Modifier.fillMaxSize()) diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/SaveViewModel.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/SaveViewModel.kt index 0324dc4f4..1cbf43078 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/SaveViewModel.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/SaveViewModel.kt @@ -26,7 +26,7 @@ class SaveViewModel @Inject constructor( var message by mutableStateOf(null) private set - fun getAuthToken(): String? = runBlocking { + private fun getAuthToken(): String? = runBlocking { datastoreRepo.getString(DatastoreKeys.omnivoreAuthToken) } diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/theme/Theme.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/theme/Theme.kt index 8286c7814..f55b9dea7 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/theme/Theme.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/theme/Theme.kt @@ -1,10 +1,10 @@ package app.omnivore.omnivore.ui.theme +import android.os.Build import androidx.compose.foundation.isSystemInDarkTheme +import androidx.compose.material3.* import androidx.compose.runtime.Composable -import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.lightColorScheme -import androidx.compose.material3.darkColorScheme +import androidx.compose.ui.platform.LocalContext private val LightColors = lightColorScheme( primary = md_theme_light_primary, @@ -68,11 +68,16 @@ private val DarkColors = darkColorScheme( ) @Composable -fun OmnivoreTheme(darkTheme: Boolean = isSystemInDarkTheme(), content: @Composable () -> Unit) { - val colorScheme = if (darkTheme) { - DarkColors +fun OmnivoreTheme( + darkTheme: Boolean = isSystemInDarkTheme(), + useDynamicTheme: Boolean = Build.VERSION.SDK_INT >= Build.VERSION_CODES.S, + content: @Composable () -> Unit +) { + val colorScheme = if (useDynamicTheme) { + val context = LocalContext.current + if (darkTheme) dynamicDarkColorScheme(context) else dynamicLightColorScheme(context) } else { - LightColors + if (darkTheme) DarkColors else LightColors } MaterialTheme( From b5e0d828e1bbc558613e73f1ec1448cb6f338a61 Mon Sep 17 00:00:00 2001 From: Satindar Dhillon Date: Thu, 18 Aug 2022 11:52:14 -0700 Subject: [PATCH 22/28] wire up google auth for android --- android/Omnivore/app/build.gradle | 2 + .../app/omnivore/omnivore/LoginViewModel.kt | 12 ++++++ .../app/omnivore/omnivore/MainActivity.kt | 38 +++++++++++++++++-- .../app/src/main/res/values/strings.xml | 3 +- 4 files changed, 51 insertions(+), 4 deletions(-) diff --git a/android/Omnivore/app/build.gradle b/android/Omnivore/app/build.gradle index c23dcee14..106ef9db4 100644 --- a/android/Omnivore/app/build.gradle +++ b/android/Omnivore/app/build.gradle @@ -121,6 +121,8 @@ dependencies { implementation 'androidx.compose.material3:material3:1.0.0-alpha16' implementation 'androidx.compose.material3:material3-window-size-class:1.0.0-alpha16' + + implementation 'com.google.android.gms:play-services-auth:20.2.0' } apollo { diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/LoginViewModel.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/LoginViewModel.kt index 8a7726991..653f7e2ab 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/LoginViewModel.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/LoginViewModel.kt @@ -1,9 +1,14 @@ package app.omnivore.omnivore +import android.content.ContentValues +import android.util.Log import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.setValue import androidx.lifecycle.* +import com.google.android.gms.auth.api.signin.GoogleSignInAccount +import com.google.android.gms.common.api.ApiException +import com.google.android.gms.tasks.Task import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.launch @@ -65,4 +70,11 @@ class LoginViewModel @Inject constructor( fun resetErrorMessage() { errorMessage = null } + + fun handleGoogleAuthTask(task: Task) { + val googleIdToken = task?.getResult(ApiException::class.java).idToken + Log.d(ContentValues.TAG, "Google Result?: $googleIdToken") + // TODO: submit id token to backend + // If token is missing then set the error message + } } diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/MainActivity.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/MainActivity.kt index 93beca3e0..3723d293a 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/MainActivity.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/MainActivity.kt @@ -1,11 +1,16 @@ package app.omnivore.omnivore import android.annotation.SuppressLint +import android.app.Activity +import android.content.Context import android.os.Bundle import android.view.View import android.widget.Toast import androidx.activity.ComponentActivity +import androidx.activity.compose.rememberLauncherForActivityResult import androidx.activity.compose.setContent +import androidx.activity.result.ActivityResult +import androidx.activity.result.contract.ActivityResultContracts import androidx.activity.viewModels import androidx.compose.foundation.background import androidx.compose.foundation.clickable @@ -27,6 +32,13 @@ import androidx.compose.runtime.livedata.observeAsState import androidx.core.view.ViewCompat import androidx.core.view.WindowCompat import androidx.core.view.WindowInsetsCompat +import com.google.android.gms.auth.api.signin.GoogleSignIn +import com.google.android.gms.auth.api.signin.GoogleSignInAccount +import com.google.android.gms.auth.api.signin.GoogleSignInClient +import com.google.android.gms.auth.api.signin.GoogleSignInOptions +import com.google.android.gms.common.GoogleApiAvailability +import com.google.android.gms.common.GooglePlayServicesUtil.isGooglePlayServicesAvailable +import com.google.android.gms.tasks.Task import dagger.hilt.android.AndroidEntryPoint import kotlinx.coroutines.launch @@ -41,7 +53,7 @@ class MainActivity : ComponentActivity() { OmnivoreTheme { // A surface container using the 'background' color from the theme Surface(modifier = Modifier.fillMaxSize(), color = MaterialTheme.colorScheme.background) { - PrimaryView(viewModel) + WelcomeView(viewModel) } } } @@ -58,7 +70,7 @@ class MainActivity : ComponentActivity() { } @Composable -fun PrimaryView(viewModel: LoginViewModel) { +fun WelcomeView(viewModel: LoginViewModel) { val hasAuthToken: Boolean by viewModel.hasAuthTokenLiveData.observeAsState(false) if (hasAuthToken) { @@ -68,6 +80,26 @@ fun PrimaryView(viewModel: LoginViewModel) { } } +@Composable +fun LoginView(viewModel: LoginViewModel) { + val isGoogleAuthAvailable: Boolean = GoogleApiAvailability + .getInstance() + .isGooglePlayServicesAvailable(LocalContext.current) == 0 + + Column( + verticalArrangement = Arrangement.Center, + horizontalAlignment = Alignment.CenterHorizontally, + modifier = Modifier + .background(MaterialTheme.colorScheme.background) + .fillMaxSize() + ) { + if (isGoogleAuthAvailable) { + GoogleAuthButton(viewModel) + } + EmailLoginView(viewModel) + } +} + @Composable fun LoggedInView(viewModel: LoginViewModel) { Column( @@ -89,7 +121,7 @@ fun LoggedInView(viewModel: LoginViewModel) { @SuppressLint("CoroutineCreationDuringComposition") @Composable -fun LoginView(viewModel: LoginViewModel) { +fun EmailLoginView(viewModel: LoginViewModel) { var email by rememberSaveable { mutableStateOf("") } var password by rememberSaveable { mutableStateOf("") } val focusManager = LocalFocusManager.current diff --git a/android/Omnivore/app/src/main/res/values/strings.xml b/android/Omnivore/app/src/main/res/values/strings.xml index e537d2ef1..90a5ab700 100644 --- a/android/Omnivore/app/src/main/res/values/strings.xml +++ b/android/Omnivore/app/src/main/res/values/strings.xml @@ -1,3 +1,4 @@ Omnivore - \ No newline at end of file + 590528454690-ovh9ku5r3fojgr1pp5kgaimr43o96btb.apps.googleusercontent.com + From 4bc1173de4d99dec77d07f166934e6767ffafbfd Mon Sep 17 00:00:00 2001 From: Satindar Dhillon Date: Thu, 18 Aug 2022 11:52:40 -0700 Subject: [PATCH 23/28] create GoogleAuth Button file --- .../java/app/omnivore/omnivore/GoogleAuth.kt | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 android/Omnivore/app/src/main/java/app/omnivore/omnivore/GoogleAuth.kt diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/GoogleAuth.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/GoogleAuth.kt new file mode 100644 index 000000000..dcdaffe44 --- /dev/null +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/GoogleAuth.kt @@ -0,0 +1,48 @@ +package app.omnivore.omnivore + +import android.app.Activity +import androidx.activity.compose.rememberLauncherForActivityResult +import androidx.activity.result.ActivityResult +import androidx.activity.result.contract.ActivityResultContracts +import androidx.compose.material3.Button +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.stringResource +import com.google.android.gms.auth.api.signin.GoogleSignIn +import com.google.android.gms.auth.api.signin.GoogleSignInAccount +import com.google.android.gms.auth.api.signin.GoogleSignInOptions +import com.google.android.gms.tasks.Task + + +@Composable +fun GoogleAuthButton(viewModel: LoginViewModel) { + val context = LocalContext.current + + val signInOptions = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) + .requestEmail() + .requestIdToken(stringResource(R.string.gcp_id)) + .requestId() + .requestProfile() + .build() + + val startForResult = + rememberLauncherForActivityResult(ActivityResultContracts.StartActivityForResult()) { result: ActivityResult -> + if (result.resultCode == Activity.RESULT_OK) { + val intent = result.data + if (result.data != null) { + val task: Task = GoogleSignIn.getSignedInAccountFromIntent(intent) + viewModel.handleGoogleAuthTask(task) + } + } + } + + Button( + onClick = { + val googleSignIn = GoogleSignIn.getClient(context, signInOptions) + startForResult.launch(googleSignIn.signInIntent) + } + ) { + Text(text = "Continue With Google") + } +} From 1b46739a0d665813d746ab6a3d32c2df126229c7 Mon Sep 17 00:00:00 2001 From: Satindar Dhillon Date: Thu, 18 Aug 2022 18:42:18 -0700 Subject: [PATCH 24/28] add sign in option for android client on server --- .../app/omnivore/omnivore/LoginViewModel.kt | 31 +++++++++++++++++++ .../app/omnivore/omnivore/RESTNetworker.kt | 17 ++++++++++ packages/api/.env.example | 1 + packages/api/.env.test | 1 + packages/api/src/routers/auth/google_auth.ts | 12 +++++-- .../routers/auth/mobile/mobile_auth_router.ts | 5 +-- .../api/src/routers/auth/mobile/sign_in.ts | 3 +- packages/api/src/util.ts | 3 ++ 8 files changed, 67 insertions(+), 6 deletions(-) diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/LoginViewModel.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/LoginViewModel.kt index 653f7e2ab..d5f788438 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/LoginViewModel.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/LoginViewModel.kt @@ -76,5 +76,36 @@ class LoginViewModel @Inject constructor( Log.d(ContentValues.TAG, "Google Result?: $googleIdToken") // TODO: submit id token to backend // If token is missing then set the error message + + if (googleIdToken == null) { + return + } + + val login = RetrofitHelper.getInstance().create(AuthProviderLoginSubmit::class.java) + + viewModelScope.launch { + isLoading = true + errorMessage = null + + val result = login.submitAuthProviderLogin( + SignInParams(token = googleIdToken, provider = "GOOGLE") + ) + + isLoading = false + + if (result.body()?.authToken != null) { + datastoreRepo.putString(DatastoreKeys.omnivoreAuthToken, result.body()?.authToken!!) + } else { + errorMessage = "Something went wrong. Please check your email/password and try again" + } + + if (result.body()?.authCookieString != null) { + datastoreRepo.putString( + DatastoreKeys.omnivoreAuthCookieString, result.body()?.authCookieString!! + ) + } + } } + + } diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/RESTNetworker.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/RESTNetworker.kt index 62a838665..c3956f73e 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/RESTNetworker.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/RESTNetworker.kt @@ -7,6 +7,17 @@ import retrofit2.http.Body import retrofit2.http.Headers import retrofit2.http.POST +data class AuthPayload( + val authCookieString: String, + val authToken: String +) + +data class SignInParams( + val token: String, + val provider: String, // APPLE or GOOGLE + val source: String = "ANDROID" +) + data class EmailAuthPayload( val authCookieString: String?, val authToken: String?, @@ -24,6 +35,12 @@ interface EmailLoginSubmit { suspend fun submitEmailLogin(@Body credentials: EmailLoginCredentials): Response } +interface AuthProviderLoginSubmit { + @Headers("Content-Type: application/json") + @POST("/api/mobile-auth/sign-in") + suspend fun submitAuthProviderLogin(@Body params: SignInParams): Response +} + object RetrofitHelper { fun getInstance(): Retrofit { return Retrofit.Builder().baseUrl(Constants.demoProdURL) diff --git a/packages/api/.env.example b/packages/api/.env.example index 6e90843b6..78aa2387a 100644 --- a/packages/api/.env.example +++ b/packages/api/.env.example @@ -12,6 +12,7 @@ GATEWAY_URL=http://localhost:4000/api IMAGE_PROXY_URL=http://localhost:8080 IMAGE_PROXY_SECRET_KEY=some-secret GAUTH_IOS_CLIENT_ID= +GAUTH_ANDROID_CLIENT_ID= GAUTH_CLIENT_ID='notset' GAUTH_SECRET='notset' GCP_PROJECT_ID=omnivore-local diff --git a/packages/api/.env.test b/packages/api/.env.test index 16fd0aaf8..bfdce2355 100644 --- a/packages/api/.env.test +++ b/packages/api/.env.test @@ -12,6 +12,7 @@ GATEWAY_URL=http://localhost:4000/api IMAGE_PROXY_URL=http://localhost:8080 IMAGE_PROXY_SECRET_KEY=some-secret GAUTH_IOS_CLIENT_ID= +GAUTH_ANDROID_CLIENT_ID= GAUTH_CLIENT_ID='notset' GAUTH_SECRET='notset' GCP_PROJECT_ID=omnivore-local diff --git a/packages/api/src/routers/auth/google_auth.ts b/packages/api/src/routers/auth/google_auth.ts index e6c78eafb..e9b2b37bd 100644 --- a/packages/api/src/routers/auth/google_auth.ts +++ b/packages/api/src/routers/auth/google_auth.ts @@ -57,16 +57,22 @@ export const validateGoogleUser = async ( } } -const googleMobileClient = new OAuth2Client(env.google.auth.iosClientId) const googleWebClient = new OAuth2Client(env.google.auth.clientId) export async function decodeGoogleToken( - idToken: string + idToken: string, + isAndroid: boolean ): Promise { try { + const clientID = isAndroid + ? env.google.auth.androidClientId + : env.google.auth.iosClientId + + const googleMobileClient = new OAuth2Client(clientID) + const loginTicket = await googleMobileClient.verifyIdToken({ idToken, - audience: env.google.auth.iosClientId, + audience: clientID, }) const email = loginTicket.getPayload()?.email diff --git a/packages/api/src/routers/auth/mobile/mobile_auth_router.ts b/packages/api/src/routers/auth/mobile/mobile_auth_router.ts index 138aae9c8..de1652bf7 100644 --- a/packages/api/src/routers/auth/mobile/mobile_auth_router.ts +++ b/packages/api/src/routers/auth/mobile/mobile_auth_router.ts @@ -16,8 +16,9 @@ export function mobileAuthRouter() { const router = express.Router() router.post('/sign-in', async (req, res) => { - const { token, provider } = req.body - const payload = await createMobileSignInResponse(token, provider) + const { token, provider, source } = req.body + const isAndroid = source === 'ANDROID' + const payload = await createMobileSignInResponse(isAndroid, token, provider) res.status(payload.statusCode).json(payload.json) }) diff --git a/packages/api/src/routers/auth/mobile/sign_in.ts b/packages/api/src/routers/auth/mobile/sign_in.ts index 699c38aa0..8feb36d41 100644 --- a/packages/api/src/routers/auth/mobile/sign_in.ts +++ b/packages/api/src/routers/auth/mobile/sign_in.ts @@ -15,12 +15,13 @@ import { StatusType } from '../../../datalayer/user/model' import { comparePassword } from '../../../utils/auth' export async function createMobileSignInResponse( + isAndroid: boolean, token?: string, provider?: AuthProvider ): Promise { try { if (token && provider === 'GOOGLE') { - const decodedTokenResult = await decodeGoogleToken(token) + const decodedTokenResult = await decodeGoogleToken(token, isAndroid) return createAuthResponsePayload(provider, decodedTokenResult) } diff --git a/packages/api/src/util.ts b/packages/api/src/util.ts index f43a9a8b2..edd3b642d 100755 --- a/packages/api/src/util.ts +++ b/packages/api/src/util.ts @@ -30,6 +30,7 @@ interface BackendEnv { google: { auth: { iosClientId: string + androidClientId: string clientId: string secret: string } @@ -122,6 +123,7 @@ const nullableEnvVars = [ 'PREVIEW_GENERATION_SERVICE_URL', 'GCS_UPLOAD_SA_KEY_FILE_PATH', 'GAUTH_IOS_CLIENT_ID', + 'GAUTH_ANDROID_CLIENT_ID', 'GAUTH_CLIENT_ID', 'GAUTH_SECRET', 'SEGMENT_WRITE_KEY', @@ -195,6 +197,7 @@ export function getEnv(): BackendEnv { const google = { auth: { iosClientId: parse('GAUTH_IOS_CLIENT_ID'), + androidClientId: parse('GAUTH_ANDROID_CLIENT_ID'), clientId: parse('GAUTH_CLIENT_ID'), secret: parse('GAUTH_SECRET'), }, From 2a84440917fd66a18fdbcba11ad3ff389b500d52 Mon Sep 17 00:00:00 2001 From: Jackson Harper Date: Fri, 19 Aug 2022 16:13:35 +0800 Subject: [PATCH 25/28] Use the Omnivore logo, set name as Save to Omnivore to differentiate from the PWA --- .../main/res/mipmap-anydpi-v26/ic_launcher.xml | 5 ----- .../res/mipmap-anydpi-v26/ic_launcher_round.xml | 5 ----- .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 2963 bytes .../src/main/res/mipmap-hdpi/ic_launcher.webp | Bin 1404 -> 0 bytes .../main/res/mipmap-hdpi/ic_launcher_round.png | Bin 0 -> 5313 bytes .../main/res/mipmap-hdpi/ic_launcher_round.webp | Bin 2898 -> 0 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 1982 bytes .../src/main/res/mipmap-mdpi/ic_launcher.webp | Bin 982 -> 0 bytes .../res/mipmap-mdpi/ic_launcher_foreground.png | Bin 0 -> 5038 bytes .../main/res/mipmap-mdpi/ic_launcher_round.png | Bin 0 -> 3130 bytes .../main/res/mipmap-mdpi/ic_launcher_round.webp | Bin 1772 -> 0 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 4453 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.webp | Bin 1900 -> 0 bytes .../res/mipmap-xhdpi/ic_launcher_foreground.png | Bin 0 -> 16359 bytes .../main/res/mipmap-xhdpi/ic_launcher_round.png | Bin 0 -> 7990 bytes .../res/mipmap-xhdpi/ic_launcher_round.webp | Bin 3918 -> 0 bytes .../src/main/res/mipmap-xxhdpi/ic_launcher.webp | Bin 2884 -> 0 bytes .../mipmap-xxhdpi/ic_launcher_foreground.png | Bin 0 -> 34299 bytes .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 0 -> 13932 bytes .../res/mipmap-xxhdpi/ic_launcher_round.webp | Bin 5914 -> 0 bytes .../src/main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 12785 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.webp | Bin 3844 -> 0 bytes .../mipmap-xxxhdpi/ic_launcher_foreground.png | Bin 0 -> 58881 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 0 -> 22342 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.webp | Bin 7778 -> 0 bytes .../main/res/values/ic_launcher_background.xml | 4 ++++ .../app/src/main/res/values/strings.xml | 2 +- 27 files changed, 5 insertions(+), 11 deletions(-) delete mode 100644 android/Omnivore/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml delete mode 100644 android/Omnivore/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml create mode 100644 android/Omnivore/app/src/main/res/mipmap-hdpi/ic_launcher.png delete mode 100644 android/Omnivore/app/src/main/res/mipmap-hdpi/ic_launcher.webp create mode 100644 android/Omnivore/app/src/main/res/mipmap-hdpi/ic_launcher_round.png delete mode 100644 android/Omnivore/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp create mode 100644 android/Omnivore/app/src/main/res/mipmap-mdpi/ic_launcher.png delete mode 100644 android/Omnivore/app/src/main/res/mipmap-mdpi/ic_launcher.webp create mode 100644 android/Omnivore/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png create mode 100644 android/Omnivore/app/src/main/res/mipmap-mdpi/ic_launcher_round.png delete mode 100644 android/Omnivore/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp create mode 100644 android/Omnivore/app/src/main/res/mipmap-xhdpi/ic_launcher.png delete mode 100644 android/Omnivore/app/src/main/res/mipmap-xhdpi/ic_launcher.webp create mode 100644 android/Omnivore/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png create mode 100644 android/Omnivore/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png delete mode 100644 android/Omnivore/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp delete mode 100644 android/Omnivore/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp create mode 100644 android/Omnivore/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png create mode 100644 android/Omnivore/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png delete mode 100644 android/Omnivore/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp create mode 100644 android/Omnivore/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png delete mode 100644 android/Omnivore/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp create mode 100644 android/Omnivore/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png create mode 100644 android/Omnivore/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png delete mode 100644 android/Omnivore/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp create mode 100644 android/Omnivore/app/src/main/res/values/ic_launcher_background.xml diff --git a/android/Omnivore/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/android/Omnivore/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml deleted file mode 100644 index 6b78462d6..000000000 --- a/android/Omnivore/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/android/Omnivore/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/android/Omnivore/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml deleted file mode 100644 index 6b78462d6..000000000 --- a/android/Omnivore/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/android/Omnivore/app/src/main/res/mipmap-hdpi/ic_launcher.png b/android/Omnivore/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..6b3619d2e93718e2af713065cfba361f7ace46a9 GIT binary patch literal 2963 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 Kmw_-CKmY()leWbG diff --git a/android/Omnivore/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/android/Omnivore/app/src/main/res/mipmap-hdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..a4756788b8ea2dbce00eeccfb25360100e71b88c GIT binary patch literal 5313 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 TWv7hT00000NkvXXu0mjf${|`c literal 0 HcmV?d00001 diff --git a/android/Omnivore/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/android/Omnivore/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp deleted file mode 100644 index b2dfe3d1ba5cf3ee31b3ecc1ced89044a1f3b7a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2898 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 diff --git a/android/Omnivore/app/src/main/res/mipmap-mdpi/ic_launcher.png b/android/Omnivore/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..f5837c7ba5b303f1f9b1f1caebfe2ff16519702c GIT binary patch literal 1982 zcmV;v2SNCWP)K@eI|K&Y%0 zWC@FG5&>zE76d7!7y%KX3m_oS4!{3*rnlU=cS>gq<$;rYnVCEPIp_b*`L}cKfC10j zGu((a45R}EFZC-}2c=$pHll(T0p;`lYBuR37o;m?Z%|9cP`dE>+x-H}%{o}p&0>=T z=xV`h^oL>Tqn65R#+J&q{)9;f{Zi;8*U@5={_MJ-U-qcQK*kHt4sM<5>~iZBBbj zuB%yt$K&(to@wuOo;P#|0vN=?YFNVkb2@6;KZmw_okbP16DT7ol*Y#RQ*4AEX`}rq z?XwUn$&aUv%O}vOJu~U- zTvxMZM!&1dDpG)jyMBoB8JaSvVq!(1)*D^<NK+<63SYsPS!{aOWq#o_0#I`8l8l~}PtlGxo5&IT$M!#u{Y4^C zl0Sy-oi#-%rxB=Uht>F+Y#uA`EafFUXwp;u#HgM~Rr^(zc4;GgFOD7uH%{d&JBuE&IVk@J5L$oVKbwwi%j-3P-Qf(KksK=K({iY7 zYbjP8#t9OC#||2d8)~P)r-=4LMspwNoC+CMIT^5|JW0qPvr1*fL@pg*4)`DWBZrd|o@1A= zx-KrRv|@g$YAi`UMH?jKr)5UjPXHw_wi*MWwt)>RCzBJ1i_~xoM?7~EO0HTo-jqKU zr;FcsJ~KClB13(jNC16iu^h(aS_!4KeFRX)Yhz4dt%wtiRNE*a5lCR!=7V!6b!@Qs z4IAFRaw7S9oAO6;LJ&1@Eff=>c_IM-wGk3qM3@F=3i}A$Kd&>!vFTtSRF%p}ED>ls zSwbgw%^)9d5Akf|NRz#Ld3uQI^~$j#s|e_wK>#~|LkSc>X>837fIugk+6F$jc<~N^ z0FJ=tv4FOcHsE@?1X@iZJ*DeC^0i3L?^#O?hoe%6I6DZ_&5O6+iEWKSass{K?wN8*;+z5b$r%x1wUshQwoVrZBRKuW zs!YcSY+3O*57h6-S4{@kLI7CMU6T8bV)FS|}#m&tfgK zX7PB6itraT)6GWpu}}$^&5l(QDL{5UmIK9H*^C4ptIY9Y4xf8#CW&(^l2LVKs;U}A z!FPvk8yQsjUvEI9s@tAVQ!^t;!}SwP)VKS#V(01{F_xr*!vt^+#!(NegYy9Hb(9L( z3lMH^C}rC(5J5ue)J`D);I=`^sM^>-YCYMvsW<~pBY>6pmTg^rCT@EQB%DS7Ky_I; zZ>+cik#+*+WUbxX1E&%IZk;M41C!{v7h<2_n%!b_at54E0KiVboDexc0%zrD4zb7+ zNOsDbIY(e00V^(d;S7~Ku>i8iKn<`q-$(9!!_s&(I>@e1@ z$TF7C)^ZgaW=xC?Fs@sgu9CGD(hCl{SV`?Ci`vTb1K)*?2P_dl>wbOn>iGkC8@L7` zbOaH6+KNYvF79izv%eUlyYB-&(A00ssb$>;_4y7%t_Kt?) zTkQ?SH}Uy2A)GX_H!tCg2GI7|KVw3qu6y*ljk_KdXu0d5mlHtdSM Qm;e9(07*qoM6N<$f|PcoSO5S3 literal 0 HcmV?d00001 diff --git a/android/Omnivore/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/android/Omnivore/app/src/main/res/mipmap-mdpi/ic_launcher.webp deleted file mode 100644 index 4f0f1d64e58ba64d180ce43ee13bf9a17835fbca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 982 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�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 VedTYEEN1tBM-iq5t&lYh{vQ|6*6jcQ diff --git a/android/SaveToOmnivore/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/android/SaveToOmnivore/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png deleted file mode 100644 index 0227993e3d37f491680f8c55a1a88b7fab4e02b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22342 zcmZsiQ*>Bew}y9YG-#~GNgLa0Y&N!S+iA?kwr$(CZQFmobA86xxZPvTwI|;9S)sDh zA_%b9umAuch=~fxf4#f@yP+Y!p7LuJPynEUAST4G=%RJ53H2v_a6$UQTS3Z7&uXNd zjBEh2b!OBl1=`P#kP0?u34o|33=4z)AwOpx9x5iOq)=8(GO(o2TI~!GL0N!-s%~+Z z>D*y$^Zv)FGoRAn&~?Ljdi~vL#NB9u-Tq(<&zUVO_y4^V3y`PNg;YNYQ$D?MPisF+ zG5Q{#7>}g)Z}Ix&tX!Kz_Xy81D%VIwOW!OEC5|t*Sj8dwh;Sq21@p(kEByA-$_j5! zW<%c!i(Jf5sghTMq^0lk;(iOi*oD!i|AgM#@~-{tb$^2A`Fpw5dWJP}NcFcy3o+X! zo{I9Iw)KWv?&!70&B0AgpNbMbOX0UId@_9HY;jK%W^v=pa8IwI{2jvUD{IhS_#~_f zdJSVjtS6k$;K!@v&AiL1%N;D2@7`qIPPm`H-pF1p4LybEwMpYI*~4<<)!B{>Z{l4q z6&Kp?_Upcfr+o_#Pz_JJWIQu|;wP&jtoyA&OR0#k?~LAMz0G>PdU@O8p}Ld|BVs>S zE!iFzc7O~iQmtrJgv^Q>@X0IcXeSO&ydt^7=r h%Z6J?3%cKJK@QuQ_R;xP}7E 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 - - #FFBB86FC - #FF6200EE - #FF3700B3 - #FF03DAC5 - #FF018786 - #FF000000 - #FFFFFFFF - \ No newline at end of file diff --git a/android/SaveToOmnivore/app/src/main/res/values/ic_launcher_background.xml b/android/SaveToOmnivore/app/src/main/res/values/ic_launcher_background.xml deleted file mode 100644 index c5d5899fd..000000000 --- a/android/SaveToOmnivore/app/src/main/res/values/ic_launcher_background.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - #FFFFFF - \ No newline at end of file diff --git a/android/SaveToOmnivore/app/src/main/res/values/strings.xml b/android/SaveToOmnivore/app/src/main/res/values/strings.xml deleted file mode 100644 index e537d2ef1..000000000 --- a/android/SaveToOmnivore/app/src/main/res/values/strings.xml +++ /dev/null @@ -1,3 +0,0 @@ - - Omnivore - \ No newline at end of file diff --git a/android/SaveToOmnivore/app/src/main/res/values/themes.xml b/android/SaveToOmnivore/app/src/main/res/values/themes.xml deleted file mode 100644 index 1a1372a95..000000000 --- a/android/SaveToOmnivore/app/src/main/res/values/themes.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - diff --git a/android/SaveToOmnivore/app/src/main/res/xml/backup_rules.xml b/android/SaveToOmnivore/app/src/main/res/xml/backup_rules.xml deleted file mode 100644 index fa0f996d2..000000000 --- a/android/SaveToOmnivore/app/src/main/res/xml/backup_rules.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - \ No newline at end of file diff --git a/android/SaveToOmnivore/app/src/main/res/xml/data_extraction_rules.xml b/android/SaveToOmnivore/app/src/main/res/xml/data_extraction_rules.xml deleted file mode 100644 index 9ee9997b0..000000000 --- a/android/SaveToOmnivore/app/src/main/res/xml/data_extraction_rules.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/android/SaveToOmnivore/app/src/test/java/app/omnivore/savetoomnivore/ExampleUnitTest.kt b/android/SaveToOmnivore/app/src/test/java/app/omnivore/savetoomnivore/ExampleUnitTest.kt deleted file mode 100644 index 332df63c4..000000000 --- a/android/SaveToOmnivore/app/src/test/java/app/omnivore/savetoomnivore/ExampleUnitTest.kt +++ /dev/null @@ -1,17 +0,0 @@ -package app.omnivore.savetoomnivore - -import org.junit.Test - -import org.junit.Assert.* - -/** - * Example local unit test, which will execute on the development machine (host). - * - * See [testing documentation](http://d.android.com/tools/testing). - */ -class ExampleUnitTest { - @Test - fun addition_isCorrect() { - assertEquals(4, 2 + 2) - } -} \ No newline at end of file diff --git a/android/SaveToOmnivore/build.gradle b/android/SaveToOmnivore/build.gradle deleted file mode 100644 index caac89d71..000000000 --- a/android/SaveToOmnivore/build.gradle +++ /dev/null @@ -1,14 +0,0 @@ -buildscript { - ext { - compose_version = '1.1.0-beta01' - } -}// Top-level build file where you can add configuration options common to all sub-projects/modules. -plugins { - id 'com.android.application' version '7.2.1' apply false - id 'com.android.library' version '7.2.1' apply false - id 'org.jetbrains.kotlin.android' version '1.6.20' apply false -} - -task clean(type: Delete) { - delete rootProject.buildDir -} \ No newline at end of file diff --git a/android/SaveToOmnivore/gradle.properties b/android/SaveToOmnivore/gradle.properties deleted file mode 100644 index cd0519bb2..000000000 --- a/android/SaveToOmnivore/gradle.properties +++ /dev/null @@ -1,23 +0,0 @@ -# Project-wide Gradle settings. -# IDE (e.g. Android Studio) users: -# Gradle settings configured through the IDE *will override* -# any settings specified in this file. -# For more details on how to configure your build environment visit -# http://www.gradle.org/docs/current/userguide/build_environment.html -# Specifies the JVM arguments used for the daemon process. -# The setting is particularly useful for tweaking memory settings. -org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8 -# When configured, Gradle will run in incubating parallel mode. -# This option should only be used with decoupled projects. More details, visit -# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects -# org.gradle.parallel=true -# AndroidX package structure to make it clearer which packages are bundled with the -# Android operating system, and which are packaged with your app"s APK -# https://developer.android.com/topic/libraries/support-library/androidx-rn -android.useAndroidX=true -# Kotlin code style for this project: "official" or "obsolete": -kotlin.code.style=official -# Enables namespacing of each library's R class so that its R class includes only the -# resources declared in the library itself and none from the library's dependencies, -# thereby reducing the size of the R class for that library -android.nonTransitiveRClass=true \ No newline at end of file diff --git a/android/SaveToOmnivore/gradle/wrapper/gradle-wrapper.jar b/android/SaveToOmnivore/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index e708b1c023ec8b20f512888fe07c5bd3ff77bb8f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 59203 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