From 276b7aa9b5f444a22773deced1e16af331ab07e2 Mon Sep 17 00:00:00 2001 From: WardPearce Date: Thu, 24 Oct 2024 14:05:16 +1300 Subject: [PATCH] Added material you color pulling android --- .vscode/settings.json | 3 +- materialious/android/app/build.gradle | 1 + .../java/us/materialio/app/ColorTheme.java | 47 +++++++++++++++++++ .../java/us/materialio/app/MainActivity.java | 10 +++- .../app/src/main/res/values/styles.xml | 6 +-- materialious/src/.d.ts | 2 +- .../http}/androidRequests.ts | 0 .../http}/capacitorFetch.ts | 0 .../src/lib/android/plugins/ColorTheme.ts | 28 +++++++++++ materialious/src/lib/patches/youtubejs.ts | 2 +- materialious/src/routes/(app)/+layout.svelte | 8 +++- materialious/svelte.config.js | 3 +- 12 files changed, 98 insertions(+), 12 deletions(-) create mode 100644 materialious/android/app/src/main/java/us/materialio/app/ColorTheme.java rename materialious/src/lib/{patches => android/http}/androidRequests.ts (100%) rename materialious/src/lib/{patches => android/http}/capacitorFetch.ts (100%) create mode 100644 materialious/src/lib/android/plugins/ColorTheme.ts diff --git a/.vscode/settings.json b/.vscode/settings.json index 794cfe05..df770654 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -11,5 +11,6 @@ "i18n-ally.keystyle": "nested", "cSpell.words": [ "Materialious" - ] + ], + "java.configuration.updateBuildConfiguration": "interactive" } \ No newline at end of file diff --git a/materialious/android/app/build.gradle b/materialious/android/app/build.gradle index 510caa83..1a5b7987 100644 --- a/materialious/android/app/build.gradle +++ b/materialious/android/app/build.gradle @@ -37,6 +37,7 @@ dependencies { implementation "androidx.core:core-splashscreen:$coreSplashScreenVersion" implementation project(':capacitor-android') testImplementation "junit:junit:$junitVersion" + implementation 'com.google.android.material:material:1.12.0' androidTestImplementation "androidx.test.ext:junit:$androidxJunitVersion" androidTestImplementation "androidx.test.espresso:espresso-core:$androidxEspressoCoreVersion" implementation project(':capacitor-cordova-android-plugins') diff --git a/materialious/android/app/src/main/java/us/materialio/app/ColorTheme.java b/materialious/android/app/src/main/java/us/materialio/app/ColorTheme.java new file mode 100644 index 00000000..abd91466 --- /dev/null +++ b/materialious/android/app/src/main/java/us/materialio/app/ColorTheme.java @@ -0,0 +1,47 @@ +package us.materialio.app; + +import android.content.Context; +import android.content.res.TypedArray; + +import com.getcapacitor.annotation.CapacitorPlugin; +import com.getcapacitor.PluginMethod; +import com.getcapacitor.PluginCall; +import com.getcapacitor.Plugin; +import com.getcapacitor.JSObject; +import com.google.android.material.color.DynamicColors; + +@CapacitorPlugin(name = "ColorTheme") +public class ColorTheme extends Plugin { + @PluginMethod() + public void getColorPalette(PluginCall call) { + JSObject colorPalette = new JSObject(); + + if (DynamicColors.isDynamicColorAvailable()) { + Context dynamicColorContext = DynamicColors.wrapContextIfAvailable(getContext(), com.google.android.material.R.style.ThemeOverlay_Material3_DynamicColors_DayNight); + + int[] attrsToResolve = { + com.google.android.material.R.attr.colorPrimary, + com.google.android.material.R.attr.colorOnPrimary, + com.google.android.material.R.attr.colorSecondary, + com.google.android.material.R.attr.colorAccent + }; + + try { + TypedArray ta = dynamicColorContext.obtainStyledAttributes(attrsToResolve); + + colorPalette.put("primary", ta.getColor(0,0)); + colorPalette.put("onPrimary", ta.getColor(1,0)); + colorPalette.put("secondary", ta.getColor(2,0)); + colorPalette.put("accent", ta.getColor(3,0)); + + ta.recycle(); + + call.resolve(colorPalette); + } catch (Exception e) { + call.reject("Unable to fetch dynamic color"); + } + } else { + call.reject("Dynamic color not available"); + } + } +} diff --git a/materialious/android/app/src/main/java/us/materialio/app/MainActivity.java b/materialious/android/app/src/main/java/us/materialio/app/MainActivity.java index 9171d44e..feee75e4 100644 --- a/materialious/android/app/src/main/java/us/materialio/app/MainActivity.java +++ b/materialious/android/app/src/main/java/us/materialio/app/MainActivity.java @@ -1,5 +1,13 @@ package us.materialio.app; +import android.os.Bundle; + import com.getcapacitor.BridgeActivity; -public class MainActivity extends BridgeActivity {} +public class MainActivity extends BridgeActivity { + @Override + protected void onCreate(Bundle savedInstanceState) { + registerPlugin(ColorTheme.class); + super.onCreate(savedInstanceState); + } +} diff --git a/materialious/android/app/src/main/res/values/styles.xml b/materialious/android/app/src/main/res/values/styles.xml index be874e54..e07ee615 100644 --- a/materialious/android/app/src/main/res/values/styles.xml +++ b/materialious/android/app/src/main/res/values/styles.xml @@ -2,11 +2,7 @@ -