From 1ce319feec67feaf5bf18f2633f809c93203b2c7 Mon Sep 17 00:00:00 2001 From: AyushBherwani1998 Date: Fri, 22 Mar 2024 17:45:17 +0530 Subject: [PATCH 01/10] initial commit --- .gradle/8.2/checksums/checksums.lock | Bin 0 -> 39 bytes .gradle/8.2/checksums/md5-checksums.bin | Bin 0 -> 33597 bytes .gradle/8.2/checksums/sha1-checksums.bin | Bin 0 -> 111584 bytes .../dependencies-accessors.lock | Bin 0 -> 39 bytes .../executionHistory/executionHistory.lock | Bin 0 -> 39 bytes .gradle/8.2/fileHashes/fileHashes.bin | Bin 0 -> 18597 bytes .gradle/8.2/fileHashes/fileHashes.lock | Bin 0 -> 39 bytes .../8.2/fileHashes/resourceHashesCache.bin | Bin 0 -> 18531 bytes .../buildOutputCleanup.lock | Bin 0 -> 39 bytes .gradle/buildOutputCleanup/cache.properties | 2 + .gradle/buildOutputCleanup/outputFiles.bin | Bin 0 -> 24887 bytes .gradle/config.properties | 2 + tkey-android-mpc/.gitignore | 15 ++ tkey-android-mpc/app/.gitignore | 1 + tkey-android-mpc/app/build.gradle.kts | 82 ++++++++ tkey-android-mpc/app/proguard-rules.pro | 21 ++ .../ExampleInstrumentedTest.kt | 24 +++ .../app/src/main/AndroidManifest.xml | 29 +++ .../example/tkey_android_mpc/MainActivity.kt | 38 ++++ .../example/tkey_android_mpc/di/appModule.kt | 27 +++ .../ui/presentation/LoginScreen.kt | 48 +++++ .../ui/presentation/MainScreen.kt | 12 ++ .../tkey_android_mpc/ui/theme/Color.kt | 11 ++ .../tkey_android_mpc/ui/theme/Theme.kt | 70 +++++++ .../example/tkey_android_mpc/ui/theme/Type.kt | 34 ++++ .../viewmodel/MainViewModel.kt | 40 ++++ .../res/drawable/ic_launcher_background.xml | 170 ++++++++++++++++ .../res/drawable/ic_launcher_foreground.xml | 30 +++ .../res/mipmap-anydpi-v26/ic_launcher.xml | 6 + .../mipmap-anydpi-v26/ic_launcher_round.xml | 6 + .../src/main/res/mipmap-hdpi/ic_launcher.webp | Bin 0 -> 1404 bytes .../res/mipmap-hdpi/ic_launcher_round.webp | Bin 0 -> 2898 bytes .../src/main/res/mipmap-mdpi/ic_launcher.webp | Bin 0 -> 982 bytes .../res/mipmap-mdpi/ic_launcher_round.webp | Bin 0 -> 1772 bytes .../main/res/mipmap-xhdpi/ic_launcher.webp | Bin 0 -> 1900 bytes .../res/mipmap-xhdpi/ic_launcher_round.webp | Bin 0 -> 3918 bytes .../main/res/mipmap-xxhdpi/ic_launcher.webp | Bin 0 -> 2884 bytes .../res/mipmap-xxhdpi/ic_launcher_round.webp | Bin 0 -> 5914 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.webp | Bin 0 -> 3844 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.webp | Bin 0 -> 7778 bytes .../app/src/main/res/values/colors.xml | 10 + .../app/src/main/res/values/strings.xml | 3 + .../app/src/main/res/values/themes.xml | 5 + .../app/src/main/res/xml/backup_rules.xml | 13 ++ .../main/res/xml/data_extraction_rules.xml | 19 ++ .../tkey_android_mpc/ExampleUnitTest.kt | 17 ++ tkey-android-mpc/build.gradle.kts | 5 + tkey-android-mpc/gradle.properties | 23 +++ .../gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 59203 bytes .../gradle/wrapper/gradle-wrapper.properties | 6 + tkey-android-mpc/gradlew | 185 ++++++++++++++++++ tkey-android-mpc/gradlew.bat | 89 +++++++++ tkey-android-mpc/settings.gradle.kts | 18 ++ 53 files changed, 1061 insertions(+) create mode 100644 .gradle/8.2/checksums/checksums.lock create mode 100644 .gradle/8.2/checksums/md5-checksums.bin create mode 100644 .gradle/8.2/checksums/sha1-checksums.bin create mode 100644 .gradle/8.2/dependencies-accessors/dependencies-accessors.lock create mode 100644 .gradle/8.2/executionHistory/executionHistory.lock create mode 100644 .gradle/8.2/fileHashes/fileHashes.bin create mode 100644 .gradle/8.2/fileHashes/fileHashes.lock create mode 100644 .gradle/8.2/fileHashes/resourceHashesCache.bin create mode 100644 .gradle/buildOutputCleanup/buildOutputCleanup.lock create mode 100644 .gradle/buildOutputCleanup/cache.properties create mode 100644 .gradle/buildOutputCleanup/outputFiles.bin create mode 100644 .gradle/config.properties create mode 100644 tkey-android-mpc/.gitignore create mode 100644 tkey-android-mpc/app/.gitignore create mode 100644 tkey-android-mpc/app/build.gradle.kts create mode 100644 tkey-android-mpc/app/proguard-rules.pro create mode 100644 tkey-android-mpc/app/src/androidTest/java/com/example/tkey_android_mpc/ExampleInstrumentedTest.kt create mode 100644 tkey-android-mpc/app/src/main/AndroidManifest.xml create mode 100644 tkey-android-mpc/app/src/main/java/com/example/tkey_android_mpc/MainActivity.kt create mode 100644 tkey-android-mpc/app/src/main/java/com/example/tkey_android_mpc/di/appModule.kt create mode 100644 tkey-android-mpc/app/src/main/java/com/example/tkey_android_mpc/ui/presentation/LoginScreen.kt create mode 100644 tkey-android-mpc/app/src/main/java/com/example/tkey_android_mpc/ui/presentation/MainScreen.kt create mode 100644 tkey-android-mpc/app/src/main/java/com/example/tkey_android_mpc/ui/theme/Color.kt create mode 100644 tkey-android-mpc/app/src/main/java/com/example/tkey_android_mpc/ui/theme/Theme.kt create mode 100644 tkey-android-mpc/app/src/main/java/com/example/tkey_android_mpc/ui/theme/Type.kt create mode 100644 tkey-android-mpc/app/src/main/java/com/example/tkey_android_mpc/viewmodel/MainViewModel.kt create mode 100644 tkey-android-mpc/app/src/main/res/drawable/ic_launcher_background.xml create mode 100644 tkey-android-mpc/app/src/main/res/drawable/ic_launcher_foreground.xml create mode 100644 tkey-android-mpc/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 tkey-android-mpc/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml create mode 100644 tkey-android-mpc/app/src/main/res/mipmap-hdpi/ic_launcher.webp create mode 100644 tkey-android-mpc/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp create mode 100644 tkey-android-mpc/app/src/main/res/mipmap-mdpi/ic_launcher.webp create mode 100644 tkey-android-mpc/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp create mode 100644 tkey-android-mpc/app/src/main/res/mipmap-xhdpi/ic_launcher.webp create mode 100644 tkey-android-mpc/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp create mode 100644 tkey-android-mpc/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp create mode 100644 tkey-android-mpc/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp create mode 100644 tkey-android-mpc/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp create mode 100644 tkey-android-mpc/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp create mode 100644 tkey-android-mpc/app/src/main/res/values/colors.xml create mode 100644 tkey-android-mpc/app/src/main/res/values/strings.xml create mode 100644 tkey-android-mpc/app/src/main/res/values/themes.xml create mode 100644 tkey-android-mpc/app/src/main/res/xml/backup_rules.xml create mode 100644 tkey-android-mpc/app/src/main/res/xml/data_extraction_rules.xml create mode 100644 tkey-android-mpc/app/src/test/java/com/example/tkey_android_mpc/ExampleUnitTest.kt create mode 100644 tkey-android-mpc/build.gradle.kts create mode 100644 tkey-android-mpc/gradle.properties create mode 100644 tkey-android-mpc/gradle/wrapper/gradle-wrapper.jar create mode 100644 tkey-android-mpc/gradle/wrapper/gradle-wrapper.properties create mode 100755 tkey-android-mpc/gradlew create mode 100644 tkey-android-mpc/gradlew.bat create mode 100644 tkey-android-mpc/settings.gradle.kts diff --git a/.gradle/8.2/checksums/checksums.lock b/.gradle/8.2/checksums/checksums.lock new file mode 100644 index 0000000000000000000000000000000000000000..6dc9d8effe57a562926297a084caedfc071c87a3 GIT binary patch literal 39 rcmZRU^*EiH@Pzpu0~oNzGBYsTT~Uzuw(fqOngRo>shOdH1p@;B-#-d~ literal 0 HcmV?d00001 diff --git a/.gradle/8.2/checksums/md5-checksums.bin b/.gradle/8.2/checksums/md5-checksums.bin new file mode 100644 index 0000000000000000000000000000000000000000..2fc06f3678b79933c8f644721bdd95f82a061e34 GIT binary patch literal 33597 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 literal 0 HcmV?d00001 diff --git a/.gradle/8.2/checksums/sha1-checksums.bin b/.gradle/8.2/checksums/sha1-checksums.bin new file mode 100644 index 0000000000000000000000000000000000000000..711aabafb8cf957632557350fbecd91955cc10eb GIT binary patch literal 111584 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 literal 0 HcmV?d00001 diff --git a/.gradle/8.2/dependencies-accessors/dependencies-accessors.lock b/.gradle/8.2/dependencies-accessors/dependencies-accessors.lock new file mode 100644 index 0000000000000000000000000000000000000000..5260a60a6f97fd59daa54e640970f20513bc5d02 GIT binary patch literal 39 pcmZSH!~9`u^N%g38K8iff#L27gHIDA8s!yq7+6is3=J$87ytm$3aJ19 literal 0 HcmV?d00001 diff --git a/.gradle/8.2/executionHistory/executionHistory.lock b/.gradle/8.2/executionHistory/executionHistory.lock new file mode 100644 index 0000000000000000000000000000000000000000..9c28b128e723341b53b57139a73c12382155e05c GIT binary patch literal 39 pcmZQhy&Zr0|38hJ3{b$#z;Jhklw5R0OYHr546LSRh6WZ43;+gI3uXWS literal 0 HcmV?d00001 diff --git a/.gradle/8.2/fileHashes/fileHashes.bin b/.gradle/8.2/fileHashes/fileHashes.bin new file mode 100644 index 0000000000000000000000000000000000000000..3abdba5a52fadd8d3e5609624c1ed6eb9a54346b GIT binary patch literal 18597 zcmeI%JxT*X6ae7aEhS(;G!blU0^$#%SV{;8+A4^JMa0Gf1c|jp0-}PRKnp=zEv&qN zAjBJZ02{$R&a%4%FJK|xz|4ER;W0B`I~yU?tHWZ1(U=^iG6Dn$5FkK+009C72oNAZ zfB*pk1PBlyK;XX!?8b+T<&UW^q**fF4Pm(wlQikAhcgJgg f@$B)fGC16Oxw`3}Y{!m^_u9v2){$H{2U*7td3Qm6 literal 0 HcmV?d00001 diff --git a/.gradle/8.2/fileHashes/fileHashes.lock b/.gradle/8.2/fileHashes/fileHashes.lock new file mode 100644 index 0000000000000000000000000000000000000000..90b64792e6b6c998b5e344e74b89de640d42d06c GIT binary patch literal 39 rcmZSf-|zbDjjs9%1_)qfW?;Cx;;eh=^4fFX|1+?fni(2cFfafB_&N+M literal 0 HcmV?d00001 diff --git a/.gradle/8.2/fileHashes/resourceHashesCache.bin b/.gradle/8.2/fileHashes/resourceHashesCache.bin new file mode 100644 index 0000000000000000000000000000000000000000..dabeb0eabb732ee83e5ef94a9672eca2b9287373 GIT binary patch literal 18531 zcmeI%I|{-;5CG7Pr3l7Ch=ulo_(2idfQ4Y~J?y-Ot)*x29QKwgP;JU*fqvr}ezxnIxQ@oaJ2Ka$fVDPnW* E1~Nn@)&Kwi literal 0 HcmV?d00001 diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock new file mode 100644 index 0000000000000000000000000000000000000000..137cbbacdd85b8ee58226388da1d17140765173a GIT binary patch literal 39 rcmZSnBD8APG;5_W1~6buWoBTwyFx3&)cv}E*G>jjQ!_&Y3kC)N)GrC9 literal 0 HcmV?d00001 diff --git a/.gradle/buildOutputCleanup/cache.properties b/.gradle/buildOutputCleanup/cache.properties new file mode 100644 index 0000000..75bca5d --- /dev/null +++ b/.gradle/buildOutputCleanup/cache.properties @@ -0,0 +1,2 @@ +#Fri Mar 22 13:40:55 IST 2024 +gradle.version=8.2 diff --git a/.gradle/buildOutputCleanup/outputFiles.bin b/.gradle/buildOutputCleanup/outputFiles.bin new file mode 100644 index 0000000000000000000000000000000000000000..65815f70699e279ca9d57e59023df6bb95daaea7 GIT binary patch literal 24887 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 literal 0 HcmV?d00001 diff --git a/.gradle/config.properties b/.gradle/config.properties new file mode 100644 index 0000000..e43f3bb --- /dev/null +++ b/.gradle/config.properties @@ -0,0 +1,2 @@ +#Fri Mar 22 13:39:34 IST 2024 +java.home=/Applications/Android Studio.app/Contents/jbr/Contents/Home diff --git a/tkey-android-mpc/.gitignore b/tkey-android-mpc/.gitignore new file mode 100644 index 0000000..aa724b7 --- /dev/null +++ b/tkey-android-mpc/.gitignore @@ -0,0 +1,15 @@ +*.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/tkey-android-mpc/app/.gitignore b/tkey-android-mpc/app/.gitignore new file mode 100644 index 0000000..42afabf --- /dev/null +++ b/tkey-android-mpc/app/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/tkey-android-mpc/app/build.gradle.kts b/tkey-android-mpc/app/build.gradle.kts new file mode 100644 index 0000000..e2f98f1 --- /dev/null +++ b/tkey-android-mpc/app/build.gradle.kts @@ -0,0 +1,82 @@ +plugins { + id("com.android.application") + id("org.jetbrains.kotlin.android") +} + +android { + namespace = "com.example.tkey_android_mpc" + compileSdk = 34 + + defaultConfig { + applicationId = "com.example.tkey_android_mpc" + minSdk = 24 + targetSdk = 34 + versionCode = 1 + versionName = "1.0" + manifestPlaceholders["torusRedirectScheme"] = "torusapp" + manifestPlaceholders [ "torusRedirectHost"] = "org.torusresearch.customauthandroid" + manifestPlaceholders["torusRedirectPathPrefix"]= "/redirect" + + testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + + vectorDrawables { + useSupportLibrary = true + } + } + + configurations { + all { + exclude("com.github.grvgoel81","fetch-node-details-java") + exclude("org.torusresearch", "torus-utils-java") + } + } + + buildTypes { + release { + isMinifyEnabled = 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.5.1" + } + packaging { + resources { + excludes += "/META-INF/{AL2.0,LGPL2.1}" + } + } +} + +dependencies { + implementation("io.insert-koin:koin-android:3.5.3") + implementation("org.torusresearch:customauth-android-sdk:5.0.2") + implementation("com.github.tkey:tkey-mpc-android:0.1.1") + implementation("androidx.core:core-ktx:1.12.0") + implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.7.0") + implementation("androidx.activity:activity-compose:1.8.2") + implementation(platform("androidx.compose:compose-bom:2023.08.00")) + implementation("androidx.compose.ui:ui") + implementation("androidx.compose.ui:ui-graphics") + implementation("androidx.compose.ui:ui-tooling-preview") + implementation("androidx.compose.material3:material3") + testImplementation("junit:junit:4.13.2") + androidTestImplementation("androidx.test.ext:junit:1.1.5") + androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1") + androidTestImplementation(platform("androidx.compose:compose-bom:2023.08.00")) + androidTestImplementation("androidx.compose.ui:ui-test-junit4") + debugImplementation("androidx.compose.ui:ui-tooling") + debugImplementation("androidx.compose.ui:ui-test-manifest") +} \ No newline at end of file diff --git a/tkey-android-mpc/app/proguard-rules.pro b/tkey-android-mpc/app/proguard-rules.pro new file mode 100644 index 0000000..481bb43 --- /dev/null +++ b/tkey-android-mpc/app/proguard-rules.pro @@ -0,0 +1,21 @@ +# 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/tkey-android-mpc/app/src/androidTest/java/com/example/tkey_android_mpc/ExampleInstrumentedTest.kt b/tkey-android-mpc/app/src/androidTest/java/com/example/tkey_android_mpc/ExampleInstrumentedTest.kt new file mode 100644 index 0000000..3359fd2 --- /dev/null +++ b/tkey-android-mpc/app/src/androidTest/java/com/example/tkey_android_mpc/ExampleInstrumentedTest.kt @@ -0,0 +1,24 @@ +package com.example.tkey_android_mpc + +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("com.example.tkey_android_mpc", appContext.packageName) + } +} \ No newline at end of file diff --git a/tkey-android-mpc/app/src/main/AndroidManifest.xml b/tkey-android-mpc/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..1f2071a --- /dev/null +++ b/tkey-android-mpc/app/src/main/AndroidManifest.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tkey-android-mpc/app/src/main/java/com/example/tkey_android_mpc/MainActivity.kt b/tkey-android-mpc/app/src/main/java/com/example/tkey_android_mpc/MainActivity.kt new file mode 100644 index 0000000..6673add --- /dev/null +++ b/tkey-android-mpc/app/src/main/java/com/example/tkey_android_mpc/MainActivity.kt @@ -0,0 +1,38 @@ +package com.example.tkey_android_mpc + +import android.os.Bundle +import androidx.activity.ComponentActivity +import androidx.activity.compose.setContent +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Surface +import androidx.compose.ui.Modifier +import com.example.tkey_android_mpc.di.appModule +import com.example.tkey_android_mpc.ui.presentation.MainScreen +import com.example.tkey_android_mpc.ui.theme.TkeyandroidmpcTheme +import com.example.tkey_android_mpc.viewmodel.MainViewModel +import org.koin.androidx.viewmodel.ext.android.viewModel +import org.koin.android.ext.koin.androidContext +import org.koin.core.context.GlobalContext.startKoin + +class MainActivity : ComponentActivity() { + private val viewModel: MainViewModel by viewModel() + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + startKoin { + androidContext(this@MainActivity) + modules(appModule) + } + setContent { + TkeyandroidmpcTheme { + // A surface container using the 'background' color from the theme + Surface( + modifier = Modifier.fillMaxSize(), + color = MaterialTheme.colorScheme.background + ) { + MainScreen(viewModel = viewModel) + } + } + } + } +} diff --git a/tkey-android-mpc/app/src/main/java/com/example/tkey_android_mpc/di/appModule.kt b/tkey-android-mpc/app/src/main/java/com/example/tkey_android_mpc/di/appModule.kt new file mode 100644 index 0000000..ff93651 --- /dev/null +++ b/tkey-android-mpc/app/src/main/java/com/example/tkey_android_mpc/di/appModule.kt @@ -0,0 +1,27 @@ +package com.example.tkey_android_mpc.di + +import android.content.Context +import com.example.tkey_android_mpc.viewmodel.MainViewModel +import org.koin.androidx.viewmodel.dsl.viewModel +import org.koin.dsl.module +import org.torusresearch.customauth.CustomAuth +import org.torusresearch.customauth.types.CustomAuthArgs +import org.torusresearch.fetchnodedetails.types.TorusNetwork + +val appModule = module { + single { + getCustomAuth(get()) + } + + viewModel { MainViewModel(get()) } +} + +private fun getCustomAuth(context: Context): CustomAuth { + val customAuthArgs = CustomAuthArgs( + "https://scripts.toruswallet.io/redirect.html", + TorusNetwork.TESTNET, + "torusapp://org.torusresearch.customauthandroid/redirect", + ) + + return CustomAuth(customAuthArgs, context) +} \ No newline at end of file diff --git a/tkey-android-mpc/app/src/main/java/com/example/tkey_android_mpc/ui/presentation/LoginScreen.kt b/tkey-android-mpc/app/src/main/java/com/example/tkey_android_mpc/ui/presentation/LoginScreen.kt new file mode 100644 index 0000000..de0d52d --- /dev/null +++ b/tkey-android-mpc/app/src/main/java/com/example/tkey_android_mpc/ui/presentation/LoginScreen.kt @@ -0,0 +1,48 @@ +package com.example.tkey_android_mpc.ui.presentation + +import android.widget.Toast +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.Button +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.unit.dp +import com.example.tkey_android_mpc.viewmodel.MainViewModel + +@Composable +fun LoginScreen(viewModel: MainViewModel) { + val context = LocalContext.current + Column( + modifier = Modifier.fillMaxSize().padding(16.dp), + verticalArrangement = Arrangement.spacedBy(16.dp, Alignment.CenterVertically), + horizontalAlignment = Alignment.CenterHorizontally, + ) { + Text( + text = "tKey Android Example", + textAlign = TextAlign.Center, + style = MaterialTheme.typography.headlineSmall + ) + + LoginButton { + try { + viewModel.loginWithOAuth() + } catch (e: Exception) { + Toast.makeText(context, e.localizedMessage, Toast.LENGTH_LONG).show() + } + } + } +} + +@Composable +fun LoginButton(onClick: () -> Unit) { + Button(onClick = { onClick() }) { + Text("Login with Google") + } +} diff --git a/tkey-android-mpc/app/src/main/java/com/example/tkey_android_mpc/ui/presentation/MainScreen.kt b/tkey-android-mpc/app/src/main/java/com/example/tkey_android_mpc/ui/presentation/MainScreen.kt new file mode 100644 index 0000000..17b73a6 --- /dev/null +++ b/tkey-android-mpc/app/src/main/java/com/example/tkey_android_mpc/ui/presentation/MainScreen.kt @@ -0,0 +1,12 @@ +package com.example.tkey_android_mpc.ui.presentation +import androidx.compose.runtime.Composable +import androidx.compose.runtime.collectAsState +import com.example.tkey_android_mpc.viewmodel.MainViewModel + +@Composable +fun MainScreen(viewModel: MainViewModel) { + val isLoggedIn = viewModel.isLoggedIn.collectAsState() + if (!isLoggedIn.value) { + return LoginScreen(viewModel) + } +} \ No newline at end of file diff --git a/tkey-android-mpc/app/src/main/java/com/example/tkey_android_mpc/ui/theme/Color.kt b/tkey-android-mpc/app/src/main/java/com/example/tkey_android_mpc/ui/theme/Color.kt new file mode 100644 index 0000000..a628e6a --- /dev/null +++ b/tkey-android-mpc/app/src/main/java/com/example/tkey_android_mpc/ui/theme/Color.kt @@ -0,0 +1,11 @@ +package com.example.tkey_android_mpc.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/tkey-android-mpc/app/src/main/java/com/example/tkey_android_mpc/ui/theme/Theme.kt b/tkey-android-mpc/app/src/main/java/com/example/tkey_android_mpc/ui/theme/Theme.kt new file mode 100644 index 0000000..ad2a18e --- /dev/null +++ b/tkey-android-mpc/app/src/main/java/com/example/tkey_android_mpc/ui/theme/Theme.kt @@ -0,0 +1,70 @@ +package com.example.tkey_android_mpc.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.WindowCompat + +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 TkeyandroidmpcTheme( + 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 { + val window = (view.context as Activity).window + window.statusBarColor = colorScheme.primary.toArgb() + WindowCompat.getInsetsController(window, view).isAppearanceLightStatusBars = darkTheme + } + } + + MaterialTheme( + colorScheme = colorScheme, + typography = Typography, + content = content + ) +} \ No newline at end of file diff --git a/tkey-android-mpc/app/src/main/java/com/example/tkey_android_mpc/ui/theme/Type.kt b/tkey-android-mpc/app/src/main/java/com/example/tkey_android_mpc/ui/theme/Type.kt new file mode 100644 index 0000000..a911b8c --- /dev/null +++ b/tkey-android-mpc/app/src/main/java/com/example/tkey_android_mpc/ui/theme/Type.kt @@ -0,0 +1,34 @@ +package com.example.tkey_android_mpc.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/tkey-android-mpc/app/src/main/java/com/example/tkey_android_mpc/viewmodel/MainViewModel.kt b/tkey-android-mpc/app/src/main/java/com/example/tkey_android_mpc/viewmodel/MainViewModel.kt new file mode 100644 index 0000000..8425d63 --- /dev/null +++ b/tkey-android-mpc/app/src/main/java/com/example/tkey_android_mpc/viewmodel/MainViewModel.kt @@ -0,0 +1,40 @@ +package com.example.tkey_android_mpc.viewmodel + +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.StateFlow +import kotlinx.coroutines.future.await +import kotlinx.coroutines.launch +import org.torusresearch.customauth.CustomAuth +import org.torusresearch.customauth.types.LoginType +import org.torusresearch.customauth.types.SubVerifierDetails +import org.torusresearch.customauth.types.TorusLoginResponse + +@OptIn(ExperimentalStdlibApi::class) +class MainViewModel(private val customAuth: CustomAuth) : ViewModel() { + private val _isLoggedIn: MutableStateFlow = MutableStateFlow(false) + val isLoggedIn: StateFlow = _isLoggedIn + + + fun loginWithOAuth() { + val allowedBrowsers = arrayOf( + "com.android.chrome", // Chrome stable + "com.google.android.apps.chrome", // Chrome system + "com.android.chrome.beta" + ) + val subVerifierDetails = SubVerifierDetails(LoginType.GOOGLE, "web3auth-google-example", "774338308167-q463s7kpvja16l4l0kko3nb925ikds2p.apps.googleusercontent.com").setPreferCustomTabs(true).setAllowedBrowsers(allowedBrowsers) + viewModelScope.launch { + try { + val loginCompletableFuture = customAuth.triggerLogin(subVerifierDetails) + val value: TorusLoginResponse = loginCompletableFuture.await() + print(value.userInfo) + _isLoggedIn.emit(true) + } catch (error: Exception) { + throw error + } + + } + + } +} \ No newline at end of file diff --git a/tkey-android-mpc/app/src/main/res/drawable/ic_launcher_background.xml b/tkey-android-mpc/app/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 0000000..07d5da9 --- /dev/null +++ b/tkey-android-mpc/app/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tkey-android-mpc/app/src/main/res/drawable/ic_launcher_foreground.xml b/tkey-android-mpc/app/src/main/res/drawable/ic_launcher_foreground.xml new file mode 100644 index 0000000..2b068d1 --- /dev/null +++ b/tkey-android-mpc/app/src/main/res/drawable/ic_launcher_foreground.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/tkey-android-mpc/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/tkey-android-mpc/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 0000000..6f3b755 --- /dev/null +++ b/tkey-android-mpc/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/tkey-android-mpc/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/tkey-android-mpc/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 0000000..6f3b755 --- /dev/null +++ b/tkey-android-mpc/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/tkey-android-mpc/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/tkey-android-mpc/app/src/main/res/mipmap-hdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..c209e78ecd372343283f4157dcfd918ec5165bb3 GIT binary patch literal 1404 zcmV-?1%vuhNk&F=1pok7MM6+kP&il$0000G0000-002h-06|PpNX!5L00Dqw+t%{r zzW2vH!KF=w&cMnnN@{whkTw+#mAh0SV?YL=)3MimFYCWp#fpdtz~8$hD5VPuQgtcN zXl<@<#Cme5f5yr2h%@8TWh?)bSK`O z^Z@d={gn7J{iyxL_y_%J|L>ep{dUxUP8a{byupH&!UNR*OutO~0{*T4q5R6@ApLF! z5{w?Z150gC7#>(VHFJZ-^6O@PYp{t!jH(_Z*nzTK4 zkc{fLE4Q3|mA2`CWQ3{8;gxGizgM!zccbdQoOLZc8hThi-IhN90RFT|zlxh3Ty&VG z?Fe{#9RrRnxzsu|Lg2ddugg7k%>0JeD+{XZ7>Z~{=|M+sh1MF7~ zz>To~`~LVQe1nNoR-gEzkpe{Ak^7{{ZBk2i_<+`Bq<^GB!RYG+z)h;Y3+<{zlMUYd zrd*W4w&jZ0%kBuDZ1EW&KLpyR7r2=}fF2%0VwHM4pUs}ZI2egi#DRMYZPek*^H9YK zay4Iy3WXFG(F14xYsoDA|KXgGc5%2DhmQ1gFCkrgHBm!lXG8I5h*uf{rn48Z!_@ z4Bk6TJAB2CKYqPjiX&mWoW>OPFGd$wqroa($ne7EUK;#3VYkXaew%Kh^3OrMhtjYN?XEoY`tRPQsAkH-DSL^QqyN0>^ zmC>{#F14jz4GeW{pJoRpLFa_*GI{?T93^rX7SPQgT@LbLqpNA}<@2wH;q493)G=1Y z#-sCiRNX~qf3KgiFzB3I>4Z%AfS(3$`-aMIBU+6?gbgDb!)L~A)je+;fR0jWLL-Fu z4)P{c7{B4Hp91&%??2$v9iRSFnuckHUm}or9seH6 z>%NbT+5*@L5(I9j@06@(!{ZI?U0=pKn8uwIg&L{JV14+8s2hnvbRrU|hZCd}IJu7*;;ECgO%8_*W Kmw_-CKmY()leWbG literal 0 HcmV?d00001 diff --git a/tkey-android-mpc/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/tkey-android-mpc/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..b2dfe3d1ba5cf3ee31b3ecc1ced89044a1f3b7a9 GIT binary patch literal 2898 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 literal 0 HcmV?d00001 diff --git a/tkey-android-mpc/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/tkey-android-mpc/app/src/main/res/mipmap-mdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..4f0f1d64e58ba64d180ce43ee13bf9a17835fbca GIT binary patch literal 982 zcmV;{11bDcNk&G_0{{S5MM6+kP&il$0000G0000l001ul06|PpNU8t;00Dqo+t#w^ z^1csucXz7-Qrhzl9HuHB%l>&>1tG2^vb*E&k^T3$FG1eQZ51g$uv4V+kI`0<^1Z@N zk?Jjh$olyC%l>)Xq;7!>{iBj&BjJ`P&$fsCfpve_epJOBkTF?nu-B7D!hO=2ZR}

C%4 zc_9eOXvPbC4kzU8YowIA8cW~Uv|eB&yYwAObSwL2vY~UYI7NXPvf3b+c^?wcs~_t{ ze_m66-0)^{JdOMKPwjpQ@Sna!*?$wTZ~su*tNv7o!gXT!GRgivP}ec?5>l1!7<(rT zds|8x(qGc673zrvYIz;J23FG{9nHMnAuP}NpAED^laz3mAN1sy+NXK)!6v1FxQ;lh zOBLA>$~P3r4b*NcqR;y6pwyhZ3_PiDb|%n1gGjl3ZU}ujInlP{eks-#oA6>rh&g+!f`hv#_%JrgYPu z(U^&XLW^QX7F9Z*SRPpQl{B%x)_AMp^}_v~?j7 zapvHMKxSf*Mtyx8I}-<*UGn3)oHd(nn=)BZ`d$lDBwq_GL($_TPaS{UeevT(AJ`p0 z9%+hQb6z)U9qjbuXjg|dExCLjpS8$VKQ55VsIC%@{N5t{NsW)=hNGI`J=x97_kbz@ E0Of=7!TQj4N+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 literal 0 HcmV?d00001 diff --git a/tkey-android-mpc/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/tkey-android-mpc/app/src/main/res/mipmap-xhdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..948a3070fe34c611c42c0d3ad3013a0dce358be0 GIT binary patch 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? literal 0 HcmV?d00001 diff --git a/tkey-android-mpc/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/tkey-android-mpc/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..1b9a6956b3acdc11f40ce2bb3f6efbd845cc243f GIT binary patch literal 3918 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�(p-{x$&=IACIfoAR!za)F-^da-t3#0Dycnp zwO~NVXwXCl;jE<}>%@xz|=8fIJAB?>+E{7)|4l${4ngA3G|=r z2Dyv;VVWSgZx9Wj>qUjleGl3Ei9K4>h!(lPS%8VOG>Xu0%6VDz^O=bjJmuP7>DeUv zrbI}MlHB^^d?{zv6d=@_ZD2lg1&G7UjnVN{1}9WkaM3H~btX0GtSzB+tZ^qRgWo4m z!GmimlG$=wgXCnr6j@m<1gAL46#T~5Bnm=2{^@>|t&`9mkEPddj zAvG~@Tv~TAm2i%VW}R-g(Z0)z-Y|szHr@rk>4MAyG*Ma*7Yh#H7(!-5>DZ@8r;_dx z{prSe<>~099F8vsYd2xff7uAS%7{S)f(|@me3t2$iy&NEc7OUEchp@9A|X;;IA>8!oX+y(BKJ$EzV* znR$z;!L$s7uy@{OT~nG#B!NRraT8(X##Ho!0r_o@gg0CA-9H^;-uE&?$2$nHv_00o z%cbuUc-tCx$Uh&EZ4Nf4Zgqv)Y6>usG3>GeQnxx_Z6+PcbX-+ysbt1hQ`K1LDpOE? zrAhIZhSN9yVIAOa22gn577tbc&i3|3V8NWy&!tw##`}9*x}gtI^h1DzZRA>UuaJG) zaZ7j)dq!O}{?#8Y7~7i6fHh4{`pL?>-18|p!S75Y#^DM>-S3)vuZG+Q7l@ek zQP~#cBpWgg#mApc_sPYjpw8odQuRokmTkzcNl`^CcKB7e&;zViV;{Y{o^Y$%7i0m# z62%#1Lq!RC?}lK>%mp}T!3Xv;L*0v*>USLm``N%>w>@fwC+#T&Tx2bN4w(20JB}oU zuSa6v^kXi0xPs?pbaOHnyiqq6By1EZY9OZ^^QA>{q-Hsd&m`pbQ%8121aWG-F5xf zlZ%;B{;C>X19|`^_?dVyCq>n+41w7|!tUS!{9rHlbhX=SZO5CQ^;!Du_E7*`GiR^Q w)2!4MKjfSAeNo!9>IaV6aUZ*?W>} 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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 literal 0 HcmV?d00001 diff --git a/tkey-android-mpc/app/src/main/res/values/colors.xml b/tkey-android-mpc/app/src/main/res/values/colors.xml new file mode 100644 index 0000000..f8c6127 --- /dev/null +++ b/tkey-android-mpc/app/src/main/res/values/colors.xml @@ -0,0 +1,10 @@ + + + #FFBB86FC + #FF6200EE + #FF3700B3 + #FF03DAC5 + #FF018786 + #FF000000 + #FFFFFFFF + \ No newline at end of file diff --git a/tkey-android-mpc/app/src/main/res/values/strings.xml b/tkey-android-mpc/app/src/main/res/values/strings.xml new file mode 100644 index 0000000..9233a42 --- /dev/null +++ b/tkey-android-mpc/app/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + tkey-android-mpc + \ No newline at end of file diff --git a/tkey-android-mpc/app/src/main/res/values/themes.xml b/tkey-android-mpc/app/src/main/res/values/themes.xml new file mode 100644 index 0000000..6c3d862 --- /dev/null +++ b/tkey-android-mpc/app/src/main/res/values/themes.xml @@ -0,0 +1,5 @@ + + + +