From 53020852ecc26ab2d1a9c8fe3eaf653609b842ad Mon Sep 17 00:00:00 2001 From: Daimolean <92239625+wuzihao051119@users.noreply.github.com> Date: Tue, 1 Jul 2025 03:33:47 +0800 Subject: [PATCH] fix(web): modal race condition (#19625) * fix(web): modal race condition * fix: translation * fix: translation --- i18n/en.json | 2 +- web/package-lock.json | 94 ++++++++++---------- web/package.json | 2 +- web/src/lib/managers/modal-manager.svelte.ts | 2 +- web/src/routes/+layout.svelte | 4 +- 5 files changed, 53 insertions(+), 51 deletions(-) diff --git a/i18n/en.json b/i18n/en.json index f3f1322045..92f2d3c35f 100644 --- a/i18n/en.json +++ b/i18n/en.json @@ -702,7 +702,7 @@ "daily_title_text_date": "E, MMM dd", "daily_title_text_date_year": "E, MMM dd, yyyy", "dark": "Dark", - "darkTheme": "Toggle dark theme", + "dark_theme": "Toggle dark theme", "date_after": "Date after", "date_and_time": "Date and Time", "date_before": "Date before", diff --git a/web/package-lock.json b/web/package-lock.json index 290dfaf23e..408fd7f00e 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -11,7 +11,7 @@ "dependencies": { "@formatjs/icu-messageformat-parser": "^2.9.8", "@immich/sdk": "file:../open-api/typescript-sdk", - "@immich/ui": "^0.22.8", + "@immich/ui": "^0.23.2", "@mapbox/mapbox-gl-rtl-text": "0.2.3", "@mdi/js": "^7.4.47", "@photo-sphere-viewer/core": "^5.11.5", @@ -790,28 +790,28 @@ } }, "node_modules/@floating-ui/core": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.0.tgz", - "integrity": "sha512-FRdBLykrPPA6P76GGGqlex/e7fbe0F1ykgxHYNXQsH/iTEtjMj/f9bpY5oQqbjt5VgZvgz/uKXbGuROijh3VLA==", + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.2.tgz", + "integrity": "sha512-wNB5ooIKHQc+Kui96jE/n69rHFWAVoxn5CAzL1Xdd8FG03cgY3MLO+GF9U3W737fYDSgPWA6MReKhBQBop6Pcw==", "license": "MIT", "dependencies": { - "@floating-ui/utils": "^0.2.9" + "@floating-ui/utils": "^0.2.10" } }, "node_modules/@floating-ui/dom": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.0.tgz", - "integrity": "sha512-lGTor4VlXcesUMh1cupTUTDoCxMb0V6bm3CnxHzQcw8Eaf1jQbgQX4i02fYgT0vJ82tb5MZ4CZk1LRGkktJCzg==", + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.2.tgz", + "integrity": "sha512-7cfaOQuCS27HD7DX+6ib2OrnW+b4ZBwDNnCcT0uTyidcmyWb03FnQqJybDBoCnpdxwBSfA94UAYlRCt7mV+TbA==", "license": "MIT", "dependencies": { - "@floating-ui/core": "^1.7.0", - "@floating-ui/utils": "^0.2.9" + "@floating-ui/core": "^1.7.2", + "@floating-ui/utils": "^0.2.10" } }, "node_modules/@floating-ui/utils": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.9.tgz", - "integrity": "sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==", + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.10.tgz", + "integrity": "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==", "license": "MIT" }, "node_modules/@formatjs/ecma402-abstract": { @@ -1333,14 +1333,14 @@ "link": true }, "node_modules/@immich/ui": { - "version": "0.22.8", - "resolved": "https://registry.npmjs.org/@immich/ui/-/ui-0.22.8.tgz", - "integrity": "sha512-DVhDgz6drx7vfNhAssX4yYgOC3JpLm8uovLvz3n36skCNU6pm8GoSgH6gMGTM36sx5go3fvhHw5N3KR+A/7bjg==", + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/@immich/ui/-/ui-0.23.2.tgz", + "integrity": "sha512-eBSZPp2f5ms0jX+fOUiJizY1IqzuGn6latsJa8Pk+wSK0HizLHA6weI3CJoyzPCrOn7L8rRja/pBr8JA/E0Z6g==", "license": "GNU Affero General Public License version 3", "dependencies": { "@mdi/js": "^7.4.47", - "bits-ui": "^1.5.3", - "tailwind-merge": "^2.5.4", + "bits-ui": "^2.0.0", + "tailwind-merge": "^3.0.0", "tailwind-variants": "^1.0.0" }, "peerDependencies": { @@ -1348,10 +1348,11 @@ } }, "node_modules/@internationalized/date": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/@internationalized/date/-/date-3.8.1.tgz", - "integrity": "sha512-PgVE6B6eIZtzf9Gu5HvJxRK3ufUFz9DhspELuhW/N0GuMGMTLvPQNRkHP2hTuP9lblOk+f+1xi96sPiPXANXAA==", + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/@internationalized/date/-/date-3.8.2.tgz", + "integrity": "sha512-/wENk7CbvLbkUvX1tu0mwq49CVkkWpkXubGel6birjRPyo6uQ4nQpnq5xZu823zRCwwn82zgHrvgF1vZyvmVgA==", "license": "Apache-2.0", + "peer": true, "dependencies": { "@swc/helpers": "^0.5.0" } @@ -2254,6 +2255,7 @@ "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.17.tgz", "integrity": "sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==", "license": "Apache-2.0", + "peer": true, "dependencies": { "tslib": "^2.8.0" } @@ -3607,28 +3609,27 @@ "license": "MIT" }, "node_modules/bits-ui": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/bits-ui/-/bits-ui-1.5.3.tgz", - "integrity": "sha512-BTZ9/GU11DaEGyQp+AY+sXCMLZO0gbDC5J8l7+Ngj4Vf6hNOwrpMmoh5iuKktA6cphXYolVkUDgBWmkh415I+w==", + "version": "2.8.10", + "resolved": "https://registry.npmjs.org/bits-ui/-/bits-ui-2.8.10.tgz", + "integrity": "sha512-MOobkqapDZNrpcNmeL2g664xFmH4tZBOKBTxFmsQYMZQuybSZHQnPXy+AjM5XZEXRmCFx5+XRmo6+fC3vHh1hQ==", "license": "MIT", "dependencies": { - "@floating-ui/core": "^1.6.4", - "@floating-ui/dom": "^1.6.7", - "@internationalized/date": "^3.5.6", + "@floating-ui/core": "^1.7.1", + "@floating-ui/dom": "^1.7.1", "esm-env": "^1.1.2", - "runed": "^0.23.2", - "svelte-toolbelt": "^0.7.1", + "runed": "^0.29.1", + "svelte-toolbelt": "^0.9.3", "tabbable": "^6.2.0" }, "engines": { - "node": ">=18", - "pnpm": ">=8.7.0" + "node": ">=20" }, "funding": { "url": "https://github.com/sponsors/huntabyte" }, "peerDependencies": { - "svelte": "^5.11.0" + "@internationalized/date": "^3.8.1", + "svelte": "^5.33.0" } }, "node_modules/brace-expansion": { @@ -8103,13 +8104,14 @@ } }, "node_modules/runed": { - "version": "0.23.4", - "resolved": "https://registry.npmjs.org/runed/-/runed-0.23.4.tgz", - "integrity": "sha512-9q8oUiBYeXIDLWNK5DfCWlkL0EW3oGbk845VdKlPeia28l751VpfesaB/+7pI6rnbx1I6rqoZ2fZxptOJLxILA==", + "version": "0.29.1", + "resolved": "https://registry.npmjs.org/runed/-/runed-0.29.1.tgz", + "integrity": "sha512-RGQEB8ZiWv4OvzBJhbMj2hMgRM8QrEptzTrDr7TDfkHaRePKjiUka4vJ9QHGY+8s87KymNvFoZAxFdQ4jtZNcA==", "funding": [ "https://github.com/sponsors/huntabyte", "https://github.com/sponsors/tglide" ], + "license": "MIT", "dependencies": { "esm-env": "^1.0.0" }, @@ -8553,9 +8555,9 @@ } }, "node_modules/style-to-object": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.8.tgz", - "integrity": "sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.9.tgz", + "integrity": "sha512-G4qppLgKu/k6FwRpHiGiKPaPTFcG3g4wNVX/Qsfu+RqQM30E7Tyu/TEgxcL9PNLF5pdRLwQdE3YKKf+KF2Dzlw==", "license": "MIT", "dependencies": { "inline-style-parser": "0.2.4" @@ -8765,15 +8767,15 @@ } }, "node_modules/svelte-toolbelt": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/svelte-toolbelt/-/svelte-toolbelt-0.7.1.tgz", - "integrity": "sha512-HcBOcR17Vx9bjaOceUvxkY3nGmbBmCBBbuWLLEWO6jtmWH8f/QoWmbyUfQZrpDINH39en1b8mptfPQT9VKQ1xQ==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/svelte-toolbelt/-/svelte-toolbelt-0.9.3.tgz", + "integrity": "sha512-HCSWxCtVmv+c6g1ACb8LTwHVbDqLKJvHpo6J8TaqwUme2hj9ATJCpjCPNISR1OCq2Q4U1KT41if9ON0isINQZw==", "funding": [ "https://github.com/sponsors/huntabyte" ], "dependencies": { "clsx": "^2.1.1", - "runed": "^0.23.2", + "runed": "^0.29.0", "style-to-object": "^1.0.8" }, "engines": { @@ -8781,7 +8783,7 @@ "pnpm": ">=8.7.0" }, "peerDependencies": { - "svelte": "^5.0.0" + "svelte": "^5.30.2" } }, "node_modules/svelte/node_modules/aria-query": { @@ -8807,9 +8809,9 @@ "license": "MIT" }, "node_modules/tailwind-merge": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.6.0.tgz", - "integrity": "sha512-P+Vu1qXfzediirmHOC3xKGAYeZtPcV9g76X+xg2FD4tYgR71ewMA35Y3sCz3zhiN/dwefRpJX0yBcgwi1fXNQA==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.3.1.tgz", + "integrity": "sha512-gBXpgUm/3rp1lMZZrM/w7D8GKqshif0zAymAhbCyIt8KMe+0v9DQ7cdYLR4FHH/cKpdTXb+A/tKKU3eolfsI+g==", "license": "MIT", "funding": { "type": "github", diff --git a/web/package.json b/web/package.json index a6e037d2e2..0dd35971cc 100644 --- a/web/package.json +++ b/web/package.json @@ -28,7 +28,7 @@ "dependencies": { "@formatjs/icu-messageformat-parser": "^2.9.8", "@immich/sdk": "file:../open-api/typescript-sdk", - "@immich/ui": "^0.22.8", + "@immich/ui": "^0.23.2", "@mapbox/mapbox-gl-rtl-text": "0.2.3", "@mdi/js": "^7.4.47", "@photo-sphere-viewer/core": "^5.11.5", diff --git a/web/src/lib/managers/modal-manager.svelte.ts b/web/src/lib/managers/modal-manager.svelte.ts index f5612d072d..73967aef15 100644 --- a/web/src/lib/managers/modal-manager.svelte.ts +++ b/web/src/lib/managers/modal-manager.svelte.ts @@ -27,7 +27,7 @@ class ModalManager { const deferred = new Promise>((resolve) => { onClose = async (...args: [StripValueIfOptional]) => { await unmount(modal); - resolve(args?.[0]); + setTimeout(() => resolve(args?.[0]), 0); }; modal = mount(Component, { diff --git a/web/src/routes/+layout.svelte b/web/src/routes/+layout.svelte index 4893513e0e..6e1c193276 100644 --- a/web/src/routes/+layout.svelte +++ b/web/src/routes/+layout.svelte @@ -35,8 +35,8 @@ $effect(() => { setTranslations({ close: $t('close'), - showPassword: $t('show_password'), - hidePassword: $t('hide_password'), + show_password: $t('show_password'), + hide_password: $t('hide_password'), }); });