{{ $t("lychee.USERNAME") }}
diff --git a/resources/js/components/forms/search/SearchBox.vue b/resources/js/components/forms/search/SearchBox.vue
index 5adcd49a605..ab3ce22ac0a 100644
--- a/resources/js/components/forms/search/SearchBox.vue
+++ b/resources/js/components/forms/search/SearchBox.vue
@@ -33,6 +33,7 @@ const search = defineModel
("search", { required: true });
const emits = defineEmits<{
search: [terms: string];
+ clear: [];
}>();
const isValid = computed(() => {
@@ -40,6 +41,13 @@ const isValid = computed(() => {
});
const debouncedFn = useDebounceFn(() => {
- emits("search", search.value);
+ if (search.value === "" || !isValid.value) {
+ emits("clear");
+ return;
+ }
+
+ if (search.value !== undefined && search.value.length >= props.searchMinimumLengh) {
+ emits("search", search.value);
+ }
}, 1000);
diff --git a/resources/js/components/forms/settings/VersionField.vue b/resources/js/components/forms/settings/VersionField.vue
deleted file mode 100644
index 5154a50fa9b..00000000000
--- a/resources/js/components/forms/settings/VersionField.vue
+++ /dev/null
@@ -1,72 +0,0 @@
-
-
-
{{ props.config.documentation }}:
-
- {{ computedVersion }}
-
-
-
-
- .
-
-
-
-
-
-
- We strongly recommend you do not modify this value.
-
-
diff --git a/resources/js/components/forms/sharing/ShareLine.vue b/resources/js/components/forms/sharing/ShareLine.vue
index 7ed144ae55f..08f1a2924c7 100644
--- a/resources/js/components/forms/sharing/ShareLine.vue
+++ b/resources/js/components/forms/sharing/ShareLine.vue
@@ -1,6 +1,6 @@
-
+
{{ props.perm.album_title }}
{{ props.perm.username }}
diff --git a/resources/js/components/forms/upload/UploadingLine.vue b/resources/js/components/forms/upload/UploadingLine.vue
index 2f33be7997f..1d766b9e652 100644
--- a/resources/js/components/forms/upload/UploadingLine.vue
+++ b/resources/js/components/forms/upload/UploadingLine.vue
@@ -1,7 +1,7 @@
- {{ file.name }}
+ {{ file.name }}
{{ progress }}%
{{ statusMessage }}
diff --git a/resources/js/components/headers/AlbumsHeader.vue b/resources/js/components/headers/AlbumsHeader.vue
index bbe5a7b7836..20e5048843e 100644
--- a/resources/js/components/headers/AlbumsHeader.vue
+++ b/resources/js/components/headers/AlbumsHeader.vue
@@ -24,7 +24,7 @@
@click="lycheeStore.toggleLogin()"
/>
-
+
@@ -106,6 +106,7 @@ import { useGalleryModals } from "@/composables/modalsTriggers/galleryModals";
import WebAuthnService from "@/services/webauthn-service";
import { useRouter } from "vue-router";
import DropBox from "../modals/DropBox.vue";
+import OpenLeftMenu from "./OpenLeftMenu.vue";
const props = defineProps<{
user: App.Http.Resources.Models.UserResource;
diff --git a/resources/js/components/headers/OpenLeftMenu.vue b/resources/js/components/headers/OpenLeftMenu.vue
new file mode 100644
index 00000000000..670b4622554
--- /dev/null
+++ b/resources/js/components/headers/OpenLeftMenu.vue
@@ -0,0 +1,12 @@
+
+
+
+
diff --git a/resources/js/components/maintenance/MaintenanceCleaning.vue b/resources/js/components/maintenance/MaintenanceCleaning.vue
index fac6706391d..399b889f57b 100644
--- a/resources/js/components/maintenance/MaintenanceCleaning.vue
+++ b/resources/js/components/maintenance/MaintenanceCleaning.vue
@@ -51,10 +51,15 @@ function load() {
function exec() {
loading.value = true;
- MaintenanceService.cleaningDo(props.path).then((response) => {
- toast.add({ severity: "success", summary: "Success", life: 3000 });
- loading.value = false;
- });
+ MaintenanceService.cleaningDo(props.path)
+ .then((response) => {
+ toast.add({ severity: "success", summary: "Success", life: 3000 });
+ loading.value = false;
+ })
+ .catch((e) => {
+ toast.add({ severity: "error", summary: "Error", detail: e.response.data.message, life: 3000 });
+ loading.value = false;
+ });
}
load();
diff --git a/resources/js/components/maintenance/MaintenanceFilesize.vue b/resources/js/components/maintenance/MaintenanceFilesize.vue
index 9d09fdaabfb..3fa32d862b9 100644
--- a/resources/js/components/maintenance/MaintenanceFilesize.vue
+++ b/resources/js/components/maintenance/MaintenanceFilesize.vue
@@ -46,10 +46,15 @@ function load() {
function exec() {
loading.value = true;
- MaintenanceService.missingFileSizesDo().then((response) => {
- toast.add({ severity: "success", summary: "Success", life: 3000 });
- loading.value = false;
- });
+ MaintenanceService.missingFileSizesDo()
+ .then((response) => {
+ toast.add({ severity: "success", summary: "Success", life: 3000 });
+ loading.value = false;
+ })
+ .catch((e) => {
+ toast.add({ severity: "error", summary: "Error", detail: e.response.data.message, life: 3000 });
+ loading.value = false;
+ });
}
load();
diff --git a/resources/js/components/maintenance/MaintenanceFixJobs.vue b/resources/js/components/maintenance/MaintenanceFixJobs.vue
index 0a9d6ecce84..e2ce88eeec9 100644
--- a/resources/js/components/maintenance/MaintenanceFixJobs.vue
+++ b/resources/js/components/maintenance/MaintenanceFixJobs.vue
@@ -46,10 +46,15 @@ function load() {
function exec() {
loading.value = true;
- MaintenanceService.jobsDo().then((response) => {
- toast.add({ severity: "success", summary: "Success", life: 3000 });
- loading.value = false;
- });
+ MaintenanceService.jobsDo()
+ .then((response) => {
+ toast.add({ severity: "success", summary: "Success", life: 3000 });
+ loading.value = false;
+ })
+ .catch((e) => {
+ toast.add({ severity: "error", summary: "Error", detail: e.response.data.message, life: 3000 });
+ loading.value = false;
+ });
}
load();
diff --git a/resources/js/components/maintenance/MaintenanceFixTree.vue b/resources/js/components/maintenance/MaintenanceFixTree.vue
index 8381c601bfa..78ac777977e 100644
--- a/resources/js/components/maintenance/MaintenanceFixTree.vue
+++ b/resources/js/components/maintenance/MaintenanceFixTree.vue
@@ -51,6 +51,9 @@ function load() {
// MaintenanceService.treeDo().then((response) => {
// toast.add({ severity: "success", summary: "Success", life: 3000 });
// loading.value = false;
+// }).catch((e) => {
+// toast.add({ severity: "error", summary: "Error", detail: e.response.data.message, life: 3000 });
+// loading.value = false;
// });
// }
diff --git a/resources/js/components/maintenance/MaintenanceGenSizevariants.vue b/resources/js/components/maintenance/MaintenanceGenSizevariants.vue
index 9725694319b..7acf0a1c8c9 100644
--- a/resources/js/components/maintenance/MaintenanceGenSizevariants.vue
+++ b/resources/js/components/maintenance/MaintenanceGenSizevariants.vue
@@ -73,10 +73,15 @@ function load() {
function exec() {
loading.value = true;
- MaintenanceService.genSizeVariantsDo(props.sv).then((response) => {
- toast.add({ severity: "success", summary: "Success", life: 3000 });
- load();
- });
+ MaintenanceService.genSizeVariantsDo(props.sv)
+ .then((response) => {
+ toast.add({ severity: "success", summary: "Success", life: 3000 });
+ load();
+ })
+ .catch((e) => {
+ toast.add({ severity: "error", summary: "Error", detail: e.response.data.message, life: 3000 });
+ loading.value = false;
+ });
}
load();
diff --git a/resources/js/components/maintenance/MaintenanceOptimize.vue b/resources/js/components/maintenance/MaintenanceOptimize.vue
index cfbc6b53499..b86aad2d5d4 100644
--- a/resources/js/components/maintenance/MaintenanceOptimize.vue
+++ b/resources/js/components/maintenance/MaintenanceOptimize.vue
@@ -27,15 +27,22 @@ import Card from "primevue/card";
import ProgressSpinner from "primevue/progressspinner";
import ScrollPanel from "primevue/scrollpanel";
import MaintenanceService from "@/services/maintenance-service";
+import { useToast } from "primevue/usetoast";
const data = ref([] as string[]);
const loading = ref(false);
+const toast = useToast();
function exec() {
loading.value = true;
- MaintenanceService.optimizeDo().then((response) => {
- data.value = response.data;
- });
+ MaintenanceService.optimizeDo()
+ .then((response) => {
+ data.value = response.data;
+ })
+ .catch((e) => {
+ toast.add({ severity: "error", summary: "Error", detail: e.response.data.message, life: 3000 });
+ loading.value = false;
+ });
}
diff --git a/resources/js/components/maintenance/MaintenanceUpdate.vue b/resources/js/components/maintenance/MaintenanceUpdate.vue
index 2b3c4fbf5f3..41c1e33e87c 100644
--- a/resources/js/components/maintenance/MaintenanceUpdate.vue
+++ b/resources/js/components/maintenance/MaintenanceUpdate.vue
@@ -30,11 +30,13 @@ import Button from "primevue/button";
import Card from "primevue/card";
import ScrollPanel from "primevue/scrollpanel";
import MaintenanceService from "@/services/maintenance-service";
+import { useToast } from "primevue/usetoast";
const data = ref(undefined as App.Http.Resources.Diagnostics.UpdateInfo | undefined);
const canCheck = ref(true);
const canUpdate = ref(false);
const loading = ref(false);
+const toast = useToast();
function load() {
MaintenanceService.updateGet().then((response) => {
@@ -49,11 +51,16 @@ function check() {
loading.value = true;
canCheck.value = false;
- MaintenanceService.updateCheck().then((response) => {
- (data.value as App.Http.Resources.Diagnostics.UpdateInfo).extra = response.data.extra;
- canUpdate.value = response.data.can_update;
- loading.value = false;
- });
+ MaintenanceService.updateCheck()
+ .then((response) => {
+ (data.value as App.Http.Resources.Diagnostics.UpdateInfo).extra = response.data.extra;
+ canUpdate.value = response.data.can_update;
+ loading.value = false;
+ })
+ .catch((e) => {
+ toast.add({ severity: "error", summary: "Error", detail: e.response.data.message, life: 3000 });
+ loading.value = false;
+ });
}
load();
diff --git a/resources/js/components/modals/UploadPanel.vue b/resources/js/components/modals/UploadPanel.vue
index 745ae66c43a..9b9a1229a6d 100644
--- a/resources/js/components/modals/UploadPanel.vue
+++ b/resources/js/components/modals/UploadPanel.vue
@@ -3,12 +3,14 @@
-
Completed: {{ counts.completed }} / {{ counts.files }}
+
Completed
+
Uploaded: {{ counts.completed }} / {{ counts.files }}
@@ -149,12 +151,9 @@ function uploadNext(searchIndex = 0, max_processing_limit: number | undefined =
break;
}
}
- console.log("searchIndex", searchIndex);
- console.log("offset", offset);
// Compute processing limit : min between the provided max and the number of waiting.
const processing_limit = Math.min(max_processing_limit ?? setup.value?.upload_processing_limit ?? 1, counts.value.waiting);
- console.log("processing limit", processing_limit);
// Start uploading chunks.
for (let i = 0; i < processing_limit; i++) {
diff --git a/resources/js/components/settings/AllSettings.vue b/resources/js/components/settings/AllSettings.vue
index 38b3b04933c..da80e941081 100644
--- a/resources/js/components/settings/AllSettings.vue
+++ b/resources/js/components/settings/AllSettings.vue
@@ -14,6 +14,7 @@
{{ item.label }}
@@ -37,7 +38,9 @@
-
+
+
+
Object.values(value).forEach((value) => configurations.push(value)));
- // console.log(configurations);
lang.value = configurations.find((config) => config.key === "lang");
dark_mode_enabled.value = configurations.find((config) => config.key === "dark_mode_enabled");
diff --git a/resources/js/components/statistics/SizeVariantMeter.vue b/resources/js/components/statistics/SizeVariantMeter.vue
index 2c7aa02d91f..855fe888c5c 100644
--- a/resources/js/components/statistics/SizeVariantMeter.vue
+++ b/resources/js/components/statistics/SizeVariantMeter.vue
@@ -32,7 +32,7 @@ import Card from "primevue/card";
import MeterGroup from "primevue/metergroup";
import { ref } from "vue";
-type SizeVairantData = {
+type SizeVariantData = {
label: string;
value: number;
size: string;
@@ -46,7 +46,7 @@ const props = defineProps<{
const lycheeStore = useLycheeStateStore();
const sizeVariantSpace = ref(undefined as undefined | App.Http.Resources.Statistics.Sizes[]);
-const sizeVariantSpaceMeter = ref(undefined as undefined | SizeVairantData[]);
+const sizeVariantSpaceMeter = ref(undefined as undefined | SizeVariantData[]);
const { is_se_preview_enabled } = storeToRefs(lycheeStore);
diff --git a/resources/js/composables/album/searchRefresher.ts b/resources/js/composables/album/searchRefresher.ts
index 98587b52810..27af286fb29 100644
--- a/resources/js/composables/album/searchRefresher.ts
+++ b/resources/js/composables/album/searchRefresher.ts
@@ -59,6 +59,14 @@ export function useSearch(albumid: Ref, lycheeStore: LycheeStateStore, s
});
}
+ function clear() {
+ albums.value = [];
+ photos.value = [];
+ from.value = 0;
+ per_page.value = 0;
+ total.value = 0;
+ }
+
return {
albums,
photos,
@@ -72,6 +80,7 @@ export function useSearch(albumid: Ref, lycheeStore: LycheeStateStore, s
albumHeader,
searchInit,
search,
+ clear,
refresh,
};
}
diff --git a/resources/js/composables/album/uploadEvents.ts b/resources/js/composables/album/uploadEvents.ts
index 1cc84c2d725..c9f7d0bf945 100644
--- a/resources/js/composables/album/uploadEvents.ts
+++ b/resources/js/composables/album/uploadEvents.ts
@@ -16,7 +16,7 @@ export function useMouseEvents(
}
function dropUpload(e: DragEvent) {
- console.log("dropUpload");
+ // console.log("dropUpload");
if (rights.value?.can_upload !== true) {
return;
}
@@ -26,7 +26,7 @@ export function useMouseEvents(
if (e.dataTransfer === null) {
return;
}
- console.log(e.dataTransfer.files.length);
+ // console.log(e.dataTransfer.files.length);
if (e.dataTransfer.files.length > 0) {
for (let i = 0; i < e.dataTransfer.files.length; i++) {
@@ -41,7 +41,7 @@ export function useMouseEvents(
}
function onPaste(e: ClipboardEvent) {
- console.log("onPaste");
+ // console.log("onPaste");
if (shouldIgnoreKeystroke()) {
return;
}
diff --git a/resources/js/menus/LeftMenu.vue b/resources/js/menus/LeftMenu.vue
index 67b8269263b..412ea99c242 100644
--- a/resources/js/menus/LeftMenu.vue
+++ b/resources/js/menus/LeftMenu.vue
@@ -1,5 +1,14 @@
-
+
+
+
+