diff --git a/mobile/android/app/src/main/AndroidManifest.xml b/mobile/android/app/src/main/AndroidManifest.xml
index 475fd33f18..60f760e2c4 100644
--- a/mobile/android/app/src/main/AndroidManifest.xml
+++ b/mobile/android/app/src/main/AndroidManifest.xml
@@ -148,7 +148,7 @@
+ android:resource="@xml/memory_widget" />
diff --git a/mobile/android/app/src/main/kotlin/io/ente/photos/EnteMemoryWidgetProvider.kt b/mobile/android/app/src/main/kotlin/io/ente/photos/EnteMemoryWidgetProvider.kt
index 481057265e..a2a4e09bf7 100644
--- a/mobile/android/app/src/main/kotlin/io/ente/photos/EnteMemoryWidgetProvider.kt
+++ b/mobile/android/app/src/main/kotlin/io/ente/photos/EnteMemoryWidgetProvider.kt
@@ -30,134 +30,167 @@ class EnteMemoryWidgetProvider : HomeWidgetProvider() {
) {
appWidgetIds.forEach { widgetId ->
val views =
- RemoteViews(context.packageName, R.layout.slideshow_layout).apply {
- val totalSet = widgetData.getInt("totalSet", 0)
- var randomNumber = -1
- var imagePath: String? = null
- if (totalSet > 0) {
- randomNumber = (0 until totalSet!!).random()
- imagePath =
- widgetData.getString(
- "slideshow_" + randomNumber,
- null
+ RemoteViews(context.packageName, R.layout.memory_widget_layout)
+ .apply {
+ val totalMemories =
+ widgetData.getInt("totalMemories", 0)
+ var randomNumber = -1
+ var imagePath: String? = null
+ if (totalMemories > 0) {
+ randomNumber =
+ (0 until totalMemories!!).random()
+ imagePath =
+ widgetData.getString(
+ "memory_widget_" +
+ randomNumber,
+ null
+ )
+ }
+ var imageExists: Boolean = false
+ if (imagePath != null) {
+ val imageFile = File(imagePath)
+ imageExists = imageFile.exists()
+ }
+ if (imageExists) {
+ val data =
+ widgetData.getString(
+ "memory_widget_${randomNumber}_data",
+ null
+ )
+ val decoded: MemoryFileData? =
+ data?.let {
+ Json.decodeFromString<
+ MemoryFileData>(it)
+ }
+ val title = decoded?.title
+ val subText = decoded?.subText
+ val generatedId = decoded?.generatedId
+
+ val deepLinkUri =
+ Uri.parse(
+ "memorywidget://message?generatedId=${generatedId}&homeWidget"
+ )
+
+ val pendingIntent =
+ HomeWidgetLaunchIntent.getActivity(
+ context,
+ MainActivity::class.java,
+ deepLinkUri
+ )
+
+ setOnClickPendingIntent(
+ R.id.widget_container,
+ pendingIntent
)
+
+ Log.d(
+ "EnteMemoryWidgetProvider",
+ "Image exists: $imagePath"
+ )
+ setViewVisibility(
+ R.id.widget_img,
+ View.VISIBLE
+ )
+ setViewVisibility(
+ R.id.widget_placeholder_container,
+ View.VISIBLE
+ )
+ setViewVisibility(
+ R.id.widget_subtitle,
+ View.VISIBLE
+ )
+ setViewVisibility(
+ R.id.widget_title,
+ View.VISIBLE
+ )
+ setViewVisibility(
+ R.id.widget_overlay,
+ View.VISIBLE
+ )
+ setViewVisibility(
+ R.id.widget_placeholder,
+ View.GONE
+ )
+ setViewVisibility(
+ R.id.widget_placeholder_text,
+ View.GONE
+ )
+ setViewVisibility(
+ R.id.widget_placeholder_container,
+ View.GONE
+ )
+
+ val bitmap: Bitmap =
+ BitmapFactory.decodeFile(imagePath)
+ setImageViewBitmap(R.id.widget_img, bitmap)
+ setTextViewText(R.id.widget_title, title)
+ setTextViewText(
+ R.id.widget_subtitle,
+ subText
+ )
+ } else {
+ // Open App on Widget Click
+ val pendingIntent =
+ HomeWidgetLaunchIntent.getActivity(
+ context,
+ MainActivity::class.java
+ )
+ setOnClickPendingIntent(
+ R.id.widget_container,
+ pendingIntent
+ )
+
+ Log.d(
+ "EnteMemoryWidgetProvider",
+ "Image doesn't exists"
+ )
+ setViewVisibility(
+ R.id.widget_img,
+ View.GONE
+ )
+ setViewVisibility(
+ R.id.widget_placeholder_container,
+ View.GONE
+ )
+ setViewVisibility(
+ R.id.widget_subtitle,
+ View.GONE
+ )
+ setViewVisibility(
+ R.id.widget_title,
+ View.GONE
+ )
+ setViewVisibility(
+ R.id.widget_overlay,
+ View.GONE
+ )
+ setViewVisibility(
+ R.id.widget_placeholder,
+ View.VISIBLE
+ )
+ setViewVisibility(
+ R.id.widget_placeholder_text,
+ View.VISIBLE
+ )
+ setViewVisibility(
+ R.id.widget_placeholder_container,
+ View.VISIBLE
+ )
+
+ val drawable =
+ ContextCompat.getDrawable(
+ context,
+ R.drawable
+ .ic_home_widget_default
+ )
+ val bitmap =
+ (drawable as BitmapDrawable).bitmap
+ setImageViewBitmap(
+ R.id.widget_placeholder,
+ bitmap
+ )
+ }
}
- var imageExists: Boolean = false
- if (imagePath != null) {
- val imageFile = File(imagePath)
- imageExists = imageFile.exists()
- }
- if (imageExists) {
- val data =
- widgetData.getString(
- "slideshow_${randomNumber}_data",
- null
- )
- val decoded: MemoryFileData? =
- data?.let {
- Json.decodeFromString<
- MemoryFileData>(it)
- }
- val title = decoded?.title
- val subText = decoded?.subText
- val generatedId = decoded?.generatedId
-
- val deepLinkUri =
- Uri.parse(
- "memorywidget://message?generatedId=${generatedId}&homeWidget"
- )
-
- val pendingIntent =
- HomeWidgetLaunchIntent.getActivity(
- context,
- MainActivity::class.java,
- deepLinkUri
- )
-
- setOnClickPendingIntent(
- R.id.widget_container,
- pendingIntent
- )
-
- Log.d(
- "EnteMemoryWidgetProvider",
- "Image exists: $imagePath"
- )
- setViewVisibility(R.id.widget_img, View.VISIBLE)
- setViewVisibility(
- R.id.widget_placeholder_container,
- View.VISIBLE
- )
- setViewVisibility(
- R.id.widget_subtitle,
- View.VISIBLE
- )
- setViewVisibility(R.id.widget_title, View.VISIBLE)
- setViewVisibility(R.id.widget_overlay, View.VISIBLE)
- setViewVisibility(
- R.id.widget_placeholder,
- View.GONE
- )
- setViewVisibility(
- R.id.widget_placeholder_text,
- View.GONE
- )
- setViewVisibility(
- R.id.widget_placeholder_container,
- View.GONE
- )
-
- val bitmap: Bitmap =
- BitmapFactory.decodeFile(imagePath)
- setImageViewBitmap(R.id.widget_img, bitmap)
- setTextViewText(R.id.widget_title, title)
- setTextViewText(R.id.widget_subtitle, subText)
- } else {
- // Open App on Widget Click
- val pendingIntent =
- HomeWidgetLaunchIntent.getActivity(
- context,
- MainActivity::class.java
- )
- setOnClickPendingIntent(
- R.id.widget_container,
- pendingIntent
- )
-
- Log.d(
- "EnteMemoryWidgetProvider",
- "Image doesn't exists"
- )
- setViewVisibility(R.id.widget_img, View.GONE)
- setViewVisibility(
- R.id.widget_placeholder_container,
- View.GONE
- )
- setViewVisibility(R.id.widget_subtitle, View.GONE)
- setViewVisibility(R.id.widget_title, View.GONE)
- setViewVisibility(R.id.widget_overlay, View.GONE)
- setViewVisibility(
- R.id.widget_placeholder,
- View.VISIBLE
- )
- setViewVisibility(
- R.id.widget_placeholder_text,
- View.VISIBLE
- )
- setViewVisibility(
- R.id.widget_placeholder_container,
- View.VISIBLE
- )
-
- val drawable =
- ContextCompat.getDrawable(
- context,
- R.drawable.ic_home_widget_default
- )
- val bitmap = (drawable as BitmapDrawable).bitmap
- setImageViewBitmap(R.id.widget_placeholder, bitmap)
- }
- }
appWidgetManager.updateAppWidget(widgetId, views)
}
diff --git a/mobile/android/app/src/main/res/drawable/slideshow_preview.png b/mobile/android/app/src/main/res/drawable/memory_widget_preview.png
similarity index 100%
rename from mobile/android/app/src/main/res/drawable/slideshow_preview.png
rename to mobile/android/app/src/main/res/drawable/memory_widget_preview.png
diff --git a/mobile/android/app/src/main/res/layout/slideshow_layout.xml b/mobile/android/app/src/main/res/layout/memory_widget_layout.xml
similarity index 100%
rename from mobile/android/app/src/main/res/layout/slideshow_layout.xml
rename to mobile/android/app/src/main/res/layout/memory_widget_layout.xml
diff --git a/mobile/android/app/src/main/res/xml/slideshow_widget.xml b/mobile/android/app/src/main/res/xml/memory_widget.xml
similarity index 68%
rename from mobile/android/app/src/main/res/xml/slideshow_widget.xml
rename to mobile/android/app/src/main/res/xml/memory_widget.xml
index de784327eb..b5d50ec5d3 100644
--- a/mobile/android/app/src/main/res/xml/slideshow_widget.xml
+++ b/mobile/android/app/src/main/res/xml/memory_widget.xml
@@ -3,8 +3,8 @@
android:minWidth="100dp"
android:minHeight="100dp"
android:updatePeriodMillis="900000"
- android:initialLayout="@layout/slideshow_layout"
- android:previewImage="@drawable/slideshow_preview"
+ android:initialLayout="@layout/memory_widget_layout"
+ android:previewImage="@drawable/memory_widget_preview"
android:resizeMode="horizontal|vertical"
android:widgetCategory="home_screen">
\ No newline at end of file
diff --git a/mobile/ios/SlideshowWidget/Assets.xcassets/AccentColor.colorset/Contents.json b/mobile/ios/EnteMemoryWidget/Assets.xcassets/AccentColor.colorset/Contents.json
similarity index 100%
rename from mobile/ios/SlideshowWidget/Assets.xcassets/AccentColor.colorset/Contents.json
rename to mobile/ios/EnteMemoryWidget/Assets.xcassets/AccentColor.colorset/Contents.json
diff --git a/mobile/ios/SlideshowWidget/Assets.xcassets/AppIcon.appiconset/Contents.json b/mobile/ios/EnteMemoryWidget/Assets.xcassets/AppIcon.appiconset/Contents.json
similarity index 100%
rename from mobile/ios/SlideshowWidget/Assets.xcassets/AppIcon.appiconset/Contents.json
rename to mobile/ios/EnteMemoryWidget/Assets.xcassets/AppIcon.appiconset/Contents.json
diff --git a/mobile/ios/SlideshowWidget/Assets.xcassets/Contents.json b/mobile/ios/EnteMemoryWidget/Assets.xcassets/Contents.json
similarity index 100%
rename from mobile/ios/SlideshowWidget/Assets.xcassets/Contents.json
rename to mobile/ios/EnteMemoryWidget/Assets.xcassets/Contents.json
diff --git a/mobile/ios/SlideshowWidget/Assets.xcassets/IconGreen.appiconset/Contents.json b/mobile/ios/EnteMemoryWidget/Assets.xcassets/IconGreen.appiconset/Contents.json
similarity index 100%
rename from mobile/ios/SlideshowWidget/Assets.xcassets/IconGreen.appiconset/Contents.json
rename to mobile/ios/EnteMemoryWidget/Assets.xcassets/IconGreen.appiconset/Contents.json
diff --git a/mobile/ios/SlideshowWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-1024x1024@1x.png b/mobile/ios/EnteMemoryWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-1024x1024@1x.png
similarity index 100%
rename from mobile/ios/SlideshowWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-1024x1024@1x.png
rename to mobile/ios/EnteMemoryWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-1024x1024@1x.png
diff --git a/mobile/ios/SlideshowWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-20x20@1x.png b/mobile/ios/EnteMemoryWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-20x20@1x.png
similarity index 100%
rename from mobile/ios/SlideshowWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-20x20@1x.png
rename to mobile/ios/EnteMemoryWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-20x20@1x.png
diff --git a/mobile/ios/SlideshowWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-20x20@2x.png b/mobile/ios/EnteMemoryWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-20x20@2x.png
similarity index 100%
rename from mobile/ios/SlideshowWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-20x20@2x.png
rename to mobile/ios/EnteMemoryWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-20x20@2x.png
diff --git a/mobile/ios/SlideshowWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-20x20@3x.png b/mobile/ios/EnteMemoryWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-20x20@3x.png
similarity index 100%
rename from mobile/ios/SlideshowWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-20x20@3x.png
rename to mobile/ios/EnteMemoryWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-20x20@3x.png
diff --git a/mobile/ios/SlideshowWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-29x29@1x.png b/mobile/ios/EnteMemoryWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-29x29@1x.png
similarity index 100%
rename from mobile/ios/SlideshowWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-29x29@1x.png
rename to mobile/ios/EnteMemoryWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-29x29@1x.png
diff --git a/mobile/ios/SlideshowWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-29x29@2x.png b/mobile/ios/EnteMemoryWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-29x29@2x.png
similarity index 100%
rename from mobile/ios/SlideshowWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-29x29@2x.png
rename to mobile/ios/EnteMemoryWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-29x29@2x.png
diff --git a/mobile/ios/SlideshowWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-29x29@3x.png b/mobile/ios/EnteMemoryWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-29x29@3x.png
similarity index 100%
rename from mobile/ios/SlideshowWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-29x29@3x.png
rename to mobile/ios/EnteMemoryWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-29x29@3x.png
diff --git a/mobile/ios/SlideshowWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-40x40@1x.png b/mobile/ios/EnteMemoryWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-40x40@1x.png
similarity index 100%
rename from mobile/ios/SlideshowWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-40x40@1x.png
rename to mobile/ios/EnteMemoryWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-40x40@1x.png
diff --git a/mobile/ios/SlideshowWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-40x40@2x.png b/mobile/ios/EnteMemoryWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-40x40@2x.png
similarity index 100%
rename from mobile/ios/SlideshowWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-40x40@2x.png
rename to mobile/ios/EnteMemoryWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-40x40@2x.png
diff --git a/mobile/ios/SlideshowWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-40x40@3x.png b/mobile/ios/EnteMemoryWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-40x40@3x.png
similarity index 100%
rename from mobile/ios/SlideshowWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-40x40@3x.png
rename to mobile/ios/EnteMemoryWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-40x40@3x.png
diff --git a/mobile/ios/SlideshowWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-50x50@1x.png b/mobile/ios/EnteMemoryWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-50x50@1x.png
similarity index 100%
rename from mobile/ios/SlideshowWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-50x50@1x.png
rename to mobile/ios/EnteMemoryWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-50x50@1x.png
diff --git a/mobile/ios/SlideshowWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-50x50@2x.png b/mobile/ios/EnteMemoryWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-50x50@2x.png
similarity index 100%
rename from mobile/ios/SlideshowWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-50x50@2x.png
rename to mobile/ios/EnteMemoryWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-50x50@2x.png
diff --git a/mobile/ios/SlideshowWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-57x57@1x.png b/mobile/ios/EnteMemoryWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-57x57@1x.png
similarity index 100%
rename from mobile/ios/SlideshowWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-57x57@1x.png
rename to mobile/ios/EnteMemoryWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-57x57@1x.png
diff --git a/mobile/ios/SlideshowWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-57x57@2x.png b/mobile/ios/EnteMemoryWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-57x57@2x.png
similarity index 100%
rename from mobile/ios/SlideshowWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-57x57@2x.png
rename to mobile/ios/EnteMemoryWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-57x57@2x.png
diff --git a/mobile/ios/SlideshowWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-60x60@2x.png b/mobile/ios/EnteMemoryWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-60x60@2x.png
similarity index 100%
rename from mobile/ios/SlideshowWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-60x60@2x.png
rename to mobile/ios/EnteMemoryWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-60x60@2x.png
diff --git a/mobile/ios/SlideshowWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-60x60@3x.png b/mobile/ios/EnteMemoryWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-60x60@3x.png
similarity index 100%
rename from mobile/ios/SlideshowWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-60x60@3x.png
rename to mobile/ios/EnteMemoryWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-60x60@3x.png
diff --git a/mobile/ios/SlideshowWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-72x72@1x.png b/mobile/ios/EnteMemoryWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-72x72@1x.png
similarity index 100%
rename from mobile/ios/SlideshowWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-72x72@1x.png
rename to mobile/ios/EnteMemoryWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-72x72@1x.png
diff --git a/mobile/ios/SlideshowWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-72x72@2x.png b/mobile/ios/EnteMemoryWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-72x72@2x.png
similarity index 100%
rename from mobile/ios/SlideshowWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-72x72@2x.png
rename to mobile/ios/EnteMemoryWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-72x72@2x.png
diff --git a/mobile/ios/SlideshowWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-76x76@1x.png b/mobile/ios/EnteMemoryWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-76x76@1x.png
similarity index 100%
rename from mobile/ios/SlideshowWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-76x76@1x.png
rename to mobile/ios/EnteMemoryWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-76x76@1x.png
diff --git a/mobile/ios/SlideshowWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-76x76@2x.png b/mobile/ios/EnteMemoryWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-76x76@2x.png
similarity index 100%
rename from mobile/ios/SlideshowWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-76x76@2x.png
rename to mobile/ios/EnteMemoryWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-76x76@2x.png
diff --git a/mobile/ios/SlideshowWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-83.5x83.5@2x.png b/mobile/ios/EnteMemoryWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-83.5x83.5@2x.png
similarity index 100%
rename from mobile/ios/SlideshowWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-83.5x83.5@2x.png
rename to mobile/ios/EnteMemoryWidget/Assets.xcassets/IconGreen.appiconset/IconGreen-83.5x83.5@2x.png
diff --git a/mobile/ios/SlideshowWidget/Assets.xcassets/WidgetBackground.colorset/Contents.json b/mobile/ios/EnteMemoryWidget/Assets.xcassets/WidgetBackground.colorset/Contents.json
similarity index 100%
rename from mobile/ios/SlideshowWidget/Assets.xcassets/WidgetBackground.colorset/Contents.json
rename to mobile/ios/EnteMemoryWidget/Assets.xcassets/WidgetBackground.colorset/Contents.json
diff --git a/mobile/ios/SlideshowWidget/SlideshowWidget.swift b/mobile/ios/EnteMemoryWidget/EnteMemoryWidget.swift
similarity index 99%
rename from mobile/ios/SlideshowWidget/SlideshowWidget.swift
rename to mobile/ios/EnteMemoryWidget/EnteMemoryWidget.swift
index f5957e00d9..d5a1c247c2 100644
--- a/mobile/ios/SlideshowWidget/SlideshowWidget.swift
+++ b/mobile/ios/EnteMemoryWidget/EnteMemoryWidget.swift
@@ -1,6 +1,6 @@
//
-// SlideshowWidget.swift
-// SlideshowWidget
+// EnteMemoryWidget.swift
+// EnteMemoryWidget
//
// Created by Prateek Sunal on 3/7/25.
// Copyright © 2025 The Chromium Authors. All rights reserved.
@@ -10,7 +10,7 @@ import SwiftUI
import UIKit
import WidgetKit
-private let widgetGroupId = "group.io.ente.frame.SlideshowWidget"
+private let widgetGroupId = "group.io.ente.frame.EnteMemoryWidget"
struct Provider: TimelineProvider {
let X = 15
@@ -39,20 +39,20 @@ struct Provider: TimelineProvider {
direction: .backward
)!
- var totalSet =
- data?.integer(forKey: "totalSet")
+ var totalMemories =
+ data?.integer(forKey: "totalMemories")
- if totalSet != nil && totalSet! > 0 {
- let count = totalSet! > 5 ? 5 : totalSet
+ if totalMemories != nil && totalMemories! > 0 {
+ let count = totalMemories! > 5 ? 5 : totalMemories
for offset in 0..
com.apple.security.application-groups
- group.io.ente.frame.SlideshowWidget
+ group.io.ente.frame.EnteMemoryWidget
diff --git a/mobile/ios/SlideshowWidgetExtension.entitlements b/mobile/ios/EnteMemoryWidgetExtensionDebug.entitlements
similarity index 82%
rename from mobile/ios/SlideshowWidgetExtension.entitlements
rename to mobile/ios/EnteMemoryWidgetExtensionDebug.entitlements
index 10fe44d549..866b9602db 100644
--- a/mobile/ios/SlideshowWidgetExtension.entitlements
+++ b/mobile/ios/EnteMemoryWidgetExtensionDebug.entitlements
@@ -4,7 +4,7 @@
com.apple.security.application-groups
- group.io.ente.frame.SlideshowWidget
+ group.io.ente.frame.EnteMemoryWidget
diff --git a/mobile/ios/Runner.xcodeproj/project.pbxproj b/mobile/ios/Runner.xcodeproj/project.pbxproj
index 5479497255..ee7eaf5710 100644
--- a/mobile/ios/Runner.xcodeproj/project.pbxproj
+++ b/mobile/ios/Runner.xcodeproj/project.pbxproj
@@ -18,7 +18,7 @@
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
CEE6BE702D7AE7FD00E4048B /* WidgetKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6DACD83C2B755B0600BA9516 /* WidgetKit.framework */; };
CEE6BE712D7AE7FD00E4048B /* SwiftUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6DACD83E2B755B0600BA9516 /* SwiftUI.framework */; };
- CEE6BE7C2D7AE7FE00E4048B /* SlideshowWidgetExtension.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = CEE6BE6F2D7AE7FD00E4048B /* SlideshowWidgetExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
+ CEE6BE7C2D7AE7FE00E4048B /* EnteMemoryWidgetExtension.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = CEE6BE6F2D7AE7FD00E4048B /* EnteMemoryWidgetExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
DA6BE5E826B3BC8600656280 /* (null) in Resources */ = {isa = PBXBuildFile; };
/* End PBXBuildFile section */
@@ -28,7 +28,7 @@
containerPortal = 97C146E61CF9000F007C117D /* Project object */;
proxyType = 1;
remoteGlobalIDString = CEE6BE6E2D7AE7FD00E4048B;
- remoteInfo = SlideshowWidgetExtension;
+ remoteInfo = EnteMemoryWidgetExtension;
};
/* End PBXContainerItemProxy section */
@@ -39,7 +39,7 @@
dstPath = "";
dstSubfolderSpec = 13;
files = (
- CEE6BE7C2D7AE7FE00E4048B /* SlideshowWidgetExtension.appex in Embed Foundation Extensions */,
+ CEE6BE7C2D7AE7FE00E4048B /* EnteMemoryWidgetExtension.appex in Embed Foundation Extensions */,
);
name = "Embed Foundation Extensions";
runOnlyForDeploymentPostprocessing = 0;
@@ -78,9 +78,9 @@
97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
A78E51A260432466D4C456A9 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; };
BB097BB5EB0EEB41344338D2 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; };
- CE93A9062D808893005CD942 /* SlideshowWidgetExtensionDebug.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = SlideshowWidgetExtensionDebug.entitlements; sourceTree = ""; };
- CEE6BE6F2D7AE7FD00E4048B /* SlideshowWidgetExtension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = SlideshowWidgetExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; };
- CEE6BE822D7AE8C700E4048B /* SlideshowWidgetExtension.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = SlideshowWidgetExtension.entitlements; sourceTree = ""; };
+ CE93A9062D808893005CD942 /* EnteMemoryWidgetExtensionDebug.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = EnteMemoryWidgetExtensionDebug.entitlements; sourceTree = ""; };
+ CEE6BE6F2D7AE7FD00E4048B /* EnteMemoryWidgetExtension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = EnteMemoryWidgetExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; };
+ CEE6BE822D7AE8C700E4048B /* EnteMemoryWidgetExtension.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = EnteMemoryWidgetExtension.entitlements; sourceTree = ""; };
DA8D6672273BBB59007651D4 /* Runner.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Runner.entitlements; sourceTree = ""; };
F82DAEEB9A7D9FD00E0FFA1E /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
/* End PBXFileReference section */
@@ -91,12 +91,12 @@
membershipExceptions = (
Info.plist,
);
- target = CEE6BE6E2D7AE7FD00E4048B /* SlideshowWidgetExtension */;
+ target = CEE6BE6E2D7AE7FD00E4048B /* EnteMemoryWidgetExtension */;
};
/* End PBXFileSystemSynchronizedBuildFileExceptionSet section */
/* Begin PBXFileSystemSynchronizedRootGroup section */
- CEE6BE722D7AE7FD00E4048B /* SlideshowWidget */ = {isa = PBXFileSystemSynchronizedRootGroup; exceptions = (CEE6BE802D7AE7FE00E4048B /* PBXFileSystemSynchronizedBuildFileExceptionSet */, ); explicitFileTypes = {}; explicitFolders = (); path = SlideshowWidget; sourceTree = ""; };
+ CEE6BE722D7AE7FD00E4048B /* EnteMemoryWidget */ = {isa = PBXFileSystemSynchronizedRootGroup; exceptions = (CEE6BE802D7AE7FE00E4048B /* PBXFileSystemSynchronizedBuildFileExceptionSet */, ); explicitFileTypes = {}; explicitFolders = (); path = EnteMemoryWidget; sourceTree = ""; };
/* End PBXFileSystemSynchronizedRootGroup section */
/* Begin PBXFrameworksBuildPhase section */
@@ -135,12 +135,12 @@
97C146E51CF9000F007C117D = {
isa = PBXGroup;
children = (
- CE93A9062D808893005CD942 /* SlideshowWidgetExtensionDebug.entitlements */,
- CEE6BE822D7AE8C700E4048B /* SlideshowWidgetExtension.entitlements */,
+ CE93A9062D808893005CD942 /* EnteMemoryWidgetExtensionDebug.entitlements */,
+ CEE6BE822D7AE8C700E4048B /* EnteMemoryWidgetExtension.entitlements */,
2772189F270F596900FFE3CC /* GoogleService-Info.plist */,
9740EEB11CF90186004384FC /* Flutter */,
97C146F01CF9000F007C117D /* Runner */,
- CEE6BE722D7AE7FD00E4048B /* SlideshowWidget */,
+ CEE6BE722D7AE7FD00E4048B /* EnteMemoryWidget */,
97C146EF1CF9000F007C117D /* Products */,
AC6CA265BB505D982CB00391 /* Pods */,
C6A22658E77FF012720BEDDA /* Frameworks */,
@@ -151,7 +151,7 @@
isa = PBXGroup;
children = (
97C146EE1CF9000F007C117D /* Runner.app */,
- CEE6BE6F2D7AE7FD00E4048B /* SlideshowWidgetExtension.appex */,
+ CEE6BE6F2D7AE7FD00E4048B /* EnteMemoryWidgetExtension.appex */,
);
name = Products;
sourceTree = "";
@@ -230,9 +230,9 @@
productReference = 97C146EE1CF9000F007C117D /* Runner.app */;
productType = "com.apple.product-type.application";
};
- CEE6BE6E2D7AE7FD00E4048B /* SlideshowWidgetExtension */ = {
+ CEE6BE6E2D7AE7FD00E4048B /* EnteMemoryWidgetExtension */ = {
isa = PBXNativeTarget;
- buildConfigurationList = CEE6BE812D7AE7FE00E4048B /* Build configuration list for PBXNativeTarget "SlideshowWidgetExtension" */;
+ buildConfigurationList = CEE6BE812D7AE7FE00E4048B /* Build configuration list for PBXNativeTarget "EnteMemoryWidgetExtension" */;
buildPhases = (
CEE6BE6B2D7AE7FD00E4048B /* Sources */,
CEE6BE6C2D7AE7FD00E4048B /* Frameworks */,
@@ -243,13 +243,13 @@
dependencies = (
);
fileSystemSynchronizedGroups = (
- CEE6BE722D7AE7FD00E4048B /* SlideshowWidget */,
+ CEE6BE722D7AE7FD00E4048B /* EnteMemoryWidget */,
);
- name = SlideshowWidgetExtension;
+ name = EnteMemoryWidgetExtension;
packageProductDependencies = (
);
- productName = SlideshowWidgetExtension;
- productReference = CEE6BE6F2D7AE7FD00E4048B /* SlideshowWidgetExtension.appex */;
+ productName = EnteMemoryWidgetExtension;
+ productReference = CEE6BE6F2D7AE7FD00E4048B /* EnteMemoryWidgetExtension.appex */;
productType = "com.apple.product-type.app-extension";
};
/* End PBXNativeTarget section */
@@ -286,7 +286,7 @@
projectRoot = "";
targets = (
97C146ED1CF9000F007C117D /* Runner */,
- CEE6BE6E2D7AE7FD00E4048B /* SlideshowWidgetExtension */,
+ CEE6BE6E2D7AE7FD00E4048B /* EnteMemoryWidgetExtension */,
);
};
/* End PBXProject section */
@@ -614,7 +614,7 @@
/* Begin PBXTargetDependency section */
CEE6BE7B2D7AE7FE00E4048B /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
- target = CEE6BE6E2D7AE7FD00E4048B /* SlideshowWidgetExtension */;
+ target = CEE6BE6E2D7AE7FD00E4048B /* EnteMemoryWidgetExtension */;
targetProxy = CEE6BE7A2D7AE7FE00E4048B /* PBXContainerItemProxy */;
};
/* End PBXTargetDependency section */
@@ -955,7 +955,7 @@
CLANG_ENABLE_OBJC_WEAK = YES;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
- CODE_SIGN_ENTITLEMENTS = SlideshowWidgetExtensionDebug.entitlements;
+ CODE_SIGN_ENTITLEMENTS = EnteMemoryWidgetExtensionDebug.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
@@ -963,8 +963,8 @@
ENABLE_USER_SCRIPT_SANDBOXING = YES;
GCC_C_LANGUAGE_STANDARD = gnu17;
GENERATE_INFOPLIST_FILE = YES;
- INFOPLIST_FILE = SlideshowWidget/Info.plist;
- INFOPLIST_KEY_CFBundleDisplayName = SlideshowWidget;
+ INFOPLIST_FILE = EnteMemoryWidget/Info.plist;
+ INFOPLIST_KEY_CFBundleDisplayName = EnteMemoryWidget;
INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2025 The Chromium Authors. All rights reserved.";
IPHONEOS_DEPLOYMENT_TARGET = 18.2;
LD_RUNPATH_SEARCH_PATHS = (
@@ -976,7 +976,7 @@
MARKETING_VERSION = 1.0;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES;
- PRODUCT_BUNDLE_IDENTIFIER = io.ente.frame.debug.SlideshowWidget;
+ PRODUCT_BUNDLE_IDENTIFIER = io.ente.frame.debug.EnteMemoryWidget;
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)";
@@ -997,7 +997,7 @@
CLANG_ENABLE_OBJC_WEAK = YES;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
- CODE_SIGN_ENTITLEMENTS = SlideshowWidgetExtension.entitlements;
+ CODE_SIGN_ENTITLEMENTS = EnteMemoryWidgetExtension.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
@@ -1005,8 +1005,8 @@
ENABLE_USER_SCRIPT_SANDBOXING = YES;
GCC_C_LANGUAGE_STANDARD = gnu17;
GENERATE_INFOPLIST_FILE = YES;
- INFOPLIST_FILE = SlideshowWidget/Info.plist;
- INFOPLIST_KEY_CFBundleDisplayName = SlideshowWidget;
+ INFOPLIST_FILE = EnteMemoryWidget/Info.plist;
+ INFOPLIST_KEY_CFBundleDisplayName = EnteMemoryWidget;
INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2025 The Chromium Authors. All rights reserved.";
IPHONEOS_DEPLOYMENT_TARGET = 18.2;
LD_RUNPATH_SEARCH_PATHS = (
@@ -1017,7 +1017,7 @@
LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
MARKETING_VERSION = 1.0;
MTL_FAST_MATH = YES;
- PRODUCT_BUNDLE_IDENTIFIER = io.ente.frame.SlideshowWidget;
+ PRODUCT_BUNDLE_IDENTIFIER = io.ente.frame.EnteMemoryWidget;
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
SWIFT_EMIT_LOC_STRINGS = YES;
@@ -1037,7 +1037,7 @@
CLANG_ENABLE_OBJC_WEAK = YES;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
- CODE_SIGN_ENTITLEMENTS = SlideshowWidgetExtension.entitlements;
+ CODE_SIGN_ENTITLEMENTS = EnteMemoryWidgetExtension.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
@@ -1045,8 +1045,8 @@
ENABLE_USER_SCRIPT_SANDBOXING = YES;
GCC_C_LANGUAGE_STANDARD = gnu17;
GENERATE_INFOPLIST_FILE = YES;
- INFOPLIST_FILE = SlideshowWidget/Info.plist;
- INFOPLIST_KEY_CFBundleDisplayName = SlideshowWidget;
+ INFOPLIST_FILE = EnteMemoryWidget/Info.plist;
+ INFOPLIST_KEY_CFBundleDisplayName = EnteMemoryWidget;
INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2025 The Chromium Authors. All rights reserved.";
IPHONEOS_DEPLOYMENT_TARGET = 18.2;
LD_RUNPATH_SEARCH_PATHS = (
@@ -1057,7 +1057,7 @@
LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
MARKETING_VERSION = 1.0;
MTL_FAST_MATH = YES;
- PRODUCT_BUNDLE_IDENTIFIER = io.ente.frame.SlideshowWidget;
+ PRODUCT_BUNDLE_IDENTIFIER = io.ente.frame.EnteMemoryWidget;
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
SWIFT_EMIT_LOC_STRINGS = YES;
@@ -1089,7 +1089,7 @@
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
- CEE6BE812D7AE7FE00E4048B /* Build configuration list for PBXNativeTarget "SlideshowWidgetExtension" */ = {
+ CEE6BE812D7AE7FE00E4048B /* Build configuration list for PBXNativeTarget "EnteMemoryWidgetExtension" */ = {
isa = XCConfigurationList;
buildConfigurations = (
CEE6BE7D2D7AE7FE00E4048B /* Debug */,
diff --git a/mobile/ios/Runner/Runner.entitlements b/mobile/ios/Runner/Runner.entitlements
index 970467a5bb..729e142a0a 100644
--- a/mobile/ios/Runner/Runner.entitlements
+++ b/mobile/ios/Runner/Runner.entitlements
@@ -11,7 +11,7 @@
com.apple.security.application-groups
- group.io.ente.frame.SlideshowWidget
+ group.io.ente.frame.EnteMemoryWidget
diff --git a/mobile/lib/core/constants.dart b/mobile/lib/core/constants.dart
index 68247cd0f2..eda935340b 100644
--- a/mobile/lib/core/constants.dart
+++ b/mobile/lib/core/constants.dart
@@ -73,7 +73,7 @@ const kSearchSectionLimit = 9;
const maxPickAssetLimit = 50;
-const iOSGroupID = "group.io.ente.frame.SlideshowWidget";
+const iOSGroupID = "group.io.ente.frame.EnteMemoryWidget";
const blackThumbnailBase64 = '/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAEBAQEBAQEB'
'AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/2wBDAQEBAQEBAQ'
diff --git a/mobile/lib/main.dart b/mobile/lib/main.dart
index 2d93ac9f5a..f3db763290 100644
--- a/mobile/lib/main.dart
+++ b/mobile/lib/main.dart
@@ -124,7 +124,7 @@ Future _homeWidgetSync() async {
try {
await HomeWidgetService.instance.initHomeWidget();
} catch (e, s) {
- _logger.severe("Error in initSlideshowWidget", e, s);
+ _logger.severe("Error in syncing home widget", e, s);
}
}
diff --git a/mobile/lib/services/memory_home_widget_service.dart b/mobile/lib/services/memory_home_widget_service.dart
index 97a6abc42f..f6e36a0273 100644
--- a/mobile/lib/services/memory_home_widget_service.dart
+++ b/mobile/lib/services/memory_home_widget_service.dart
@@ -21,7 +21,7 @@ class MemoryHomeWidgetService {
bool _hasSyncedMemory = false;
static const memoryChangedKey = "memoryChanged.widget";
- static const totalSet = "totalSet";
+ static const totalMemories = "totalMemories";
init(SharedPreferences prefs) {
_prefs = prefs;
@@ -135,7 +135,7 @@ class MemoryHomeWidgetService {
Future _updateWidget({String? text}) async {
await HomeWidgetService.instance.updateWidget(
androidClass: "EnteMemoryWidgetProvider",
- iOSClass: "SlideshowWidget",
+ iOSClass: "EnteMemoryWidget",
);
if (flagService.internalUser) {
await Fluttertoast.showToast(
@@ -168,11 +168,11 @@ class MemoryHomeWidgetService {
}
Future _getTotal() async {
- return HomeWidgetService.instance.getData(totalSet);
+ return HomeWidgetService.instance.getData(totalMemories);
}
Future _setTotal(int? total) async =>
- await HomeWidgetService.instance.setData(totalSet, total);
+ await HomeWidgetService.instance.setData(totalMemories, total);
Future _lockAndLoadMemories() async {
final files = await _getMemories();
@@ -188,7 +188,7 @@ class MemoryHomeWidgetService {
for (final i in files.entries) {
for (final file in i.value) {
final value = await HomeWidgetService.instance
- .renderFile(file, "slideshow_$index", i.key)
+ .renderFile(file, "memory_widget_$index", i.key)
.catchError(
(e, sT) {
_logger.severe("Error rendering widget", e, sT);