diff --git a/mobile/android/app/build.gradle b/mobile/android/app/build.gradle
index 0d07228252..eb179ae2d4 100644
--- a/mobile/android/app/build.gradle
+++ b/mobile/android/app/build.gradle
@@ -3,6 +3,8 @@ plugins {
id "kotlin-android"
id "dev.flutter.flutter-gradle-plugin"
id 'com.google.devtools.ksp'
+ id 'org.jetbrains.kotlin.plugin.compose' version '2.0.20' // this version matches your Kotlin version
+
}
def localProperties = new Properties()
@@ -45,6 +47,10 @@ android {
main.java.srcDirs += 'src/main/kotlin'
}
+ buildFeatures {
+ compose true
+ }
+
defaultConfig {
applicationId "app.alextran.immich"
minSdkVersion 26
@@ -102,6 +108,9 @@ dependencies {
ksp "com.github.bumptech.glide:ksp:$glide_version"
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.1.2'
+
+ //Glance Widget
+ implementation "androidx.glance:glance-appwidget:1.1.1"
}
// This is uncommented in F-Droid build script
diff --git a/mobile/android/app/src/main/AndroidManifest.xml b/mobile/android/app/src/main/AndroidManifest.xml
index 6a96aa68e4..b9ccf8201a 100644
--- a/mobile/android/app/src/main/AndroidManifest.xml
+++ b/mobile/android/app/src/main/AndroidManifest.xml
@@ -141,6 +141,19 @@
android:name="androidx.startup.InitializationProvider"
android:authorities="${applicationId}.androidx-startup"
tools:node="remove" />
+
+
+
+
+
+
+
+
+
diff --git a/mobile/android/app/src/main/kotlin/app/alextran/immich/widget/RandomReceiver.kt b/mobile/android/app/src/main/kotlin/app/alextran/immich/widget/RandomReceiver.kt
new file mode 100644
index 0000000000..8e019c48e8
--- /dev/null
+++ b/mobile/android/app/src/main/kotlin/app/alextran/immich/widget/RandomReceiver.kt
@@ -0,0 +1,8 @@
+package app.alextran.immich.widget
+
+import HomeWidgetGlanceWidgetReceiver
+
+class RandomReceiver : HomeWidgetGlanceWidgetReceiver() {
+ override val glanceAppWidget = RandomWidget()
+}
+
diff --git a/mobile/android/app/src/main/kotlin/app/alextran/immich/widget/RandomWidget.kt b/mobile/android/app/src/main/kotlin/app/alextran/immich/widget/RandomWidget.kt
new file mode 100644
index 0000000000..9f6db5c835
--- /dev/null
+++ b/mobile/android/app/src/main/kotlin/app/alextran/immich/widget/RandomWidget.kt
@@ -0,0 +1,37 @@
+package app.alextran.immich.widget
+
+import HomeWidgetGlanceState
+import HomeWidgetGlanceStateDefinition
+import android.content.Context
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.unit.dp
+import androidx.glance.appwidget.*
+import androidx.glance.*
+import androidx.glance.layout.*
+import androidx.glance.state.*
+import androidx.glance.text.*
+
+class RandomWidget : GlanceAppWidget() {
+ override val stateDefinition: GlanceStateDefinition<*>
+ get() = HomeWidgetGlanceStateDefinition()
+
+ override suspend fun provideGlance(context: Context, id: GlanceId) {
+ provideContent {
+ GlanceContent(context, currentState())
+ }
+ }
+
+ @Composable
+ private fun GlanceContent(context: Context, currentState: HomeWidgetGlanceState) {
+ val prefs = currentState.preferences
+ val counter = prefs.getInt("counter", 0)
+ Box(modifier = GlanceModifier.background(Color.White).padding(16.dp)) {
+ Column() {
+ Text(
+ counter.toString()
+ )
+ }
+ }
+ }
+}
diff --git a/mobile/android/app/src/main/res/xml/widget.xml b/mobile/android/app/src/main/res/xml/widget.xml
new file mode 100644
index 0000000000..7b461bf324
--- /dev/null
+++ b/mobile/android/app/src/main/res/xml/widget.xml
@@ -0,0 +1,7 @@
+
\ No newline at end of file