diff --git a/apps/expo/app.config.ts b/apps/expo/app.config.ts index 9a918c8..5c0ae5b 100644 --- a/apps/expo/app.config.ts +++ b/apps/expo/app.config.ts @@ -58,6 +58,31 @@ const defineConfig = (): ExpoConfig => ({ }, }, ], + [ + "expo-dynamic-app-icon", + { + main: { + image: "./assets/images/main.png", + prerendered: true, + }, + blue: { + image: "./assets/images/blue.png", + prerendered: true, + }, + gray: { + image: "./assets/images/gray.png", + prerendered: true, + }, + red: { + image: "./assets/images/red.png", + prerendered: true, + }, + teal: { + image: "./assets/images/teal.png", + prerendered: true, + }, + }, + ], ], }); diff --git a/apps/expo/assets/images/default.png b/apps/expo/assets/images/main.png similarity index 100% rename from apps/expo/assets/images/default.png rename to apps/expo/assets/images/main.png diff --git a/apps/expo/package.json b/apps/expo/package.json index 135b0a6..91bae2e 100644 --- a/apps/expo/package.json +++ b/apps/expo/package.json @@ -35,6 +35,7 @@ "expo-brightness": "~11.8.0", "expo-build-properties": "~0.11.1", "expo-constants": "~15.4.5", + "expo-dynamic-app-icon": "github:simonsturge/expo-dynamic-app-icon", "expo-haptics": "~12.8.1", "expo-linear-gradient": "^12.7.2", "expo-linking": "~6.2.2", diff --git a/apps/expo/src/stores/theme/index.ts b/apps/expo/src/stores/theme/index.ts index a4251f1..948409e 100644 --- a/apps/expo/src/stores/theme/index.ts +++ b/apps/expo/src/stores/theme/index.ts @@ -1,3 +1,4 @@ +import { setAppIcon } from "expo-dynamic-app-icon"; import { create } from "zustand"; import { immer } from "zustand/middleware/immer"; @@ -14,6 +15,7 @@ export const useThemeStore = create( setTheme(v) { set((s) => { s.theme = v; + setAppIcon(v); }); }, })), diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 88af630..01d1da6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -77,6 +77,9 @@ importers: expo-constants: specifier: ~15.4.5 version: 15.4.5(expo@50.0.13) + expo-dynamic-app-icon: + specifier: github:simonsturge/expo-dynamic-app-icon + version: github.com/simonsturge/expo-dynamic-app-icon/acfd73827573e99a5e1bfbe47cf2fb1656e9ccf0(expo@50.0.13)(react-native@0.73.5)(react@18.2.0) expo-haptics: specifier: ~12.8.1 version: 12.8.1(expo@50.0.13) @@ -13494,3 +13497,20 @@ packages: react: 18.2.0 use-sync-external-store: 1.2.0(react@18.2.0) dev: false + + github.com/simonsturge/expo-dynamic-app-icon/acfd73827573e99a5e1bfbe47cf2fb1656e9ccf0(expo@50.0.13)(react-native@0.73.5)(react@18.2.0): + resolution: {tarball: https://codeload.github.com/simonsturge/expo-dynamic-app-icon/tar.gz/acfd73827573e99a5e1bfbe47cf2fb1656e9ccf0} + id: github.com/simonsturge/expo-dynamic-app-icon/acfd73827573e99a5e1bfbe47cf2fb1656e9ccf0 + name: expo-dynamic-app-icon + version: 1.2.0 + prepare: true + requiresBuild: true + peerDependencies: + expo: '>=49' + react: '*' + react-native: '*' + dependencies: + expo: 50.0.13(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21) + react: 18.2.0 + react-native: 0.73.5(@babel/core@7.23.9)(@babel/preset-env@7.23.9)(react@18.2.0) + dev: false