Improve save public list (#554)
* improve save public list * remove obsolete code fragment --------- Co-authored-by: Flomp <Flomp@users.noreply.github.com>
This commit is contained in:
@@ -6,16 +6,20 @@
|
|||||||
title?: string;
|
title?: string;
|
||||||
text: string;
|
text: string;
|
||||||
action?: string;
|
action?: string;
|
||||||
|
deny?: string;
|
||||||
id?: string;
|
id?: string;
|
||||||
onconfirm?: () => void
|
onconfirm?: () => void
|
||||||
|
oncancel?: () => void
|
||||||
}
|
}
|
||||||
|
|
||||||
let {
|
let {
|
||||||
title = $_("confirm-deletion"),
|
title = $_("confirm-deletion"),
|
||||||
text,
|
text,
|
||||||
action = "delete",
|
action = "delete",
|
||||||
|
deny ="cancel",
|
||||||
id = "confirm-modal",
|
id = "confirm-modal",
|
||||||
onconfirm
|
onconfirm,
|
||||||
|
oncancel
|
||||||
}: Props = $props();
|
}: Props = $props();
|
||||||
|
|
||||||
let modal: Modal;
|
let modal: Modal;
|
||||||
@@ -24,6 +28,11 @@
|
|||||||
modal.openModal();
|
modal.openModal();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function cancel() {
|
||||||
|
oncancel?.();
|
||||||
|
modal.closeModal!();
|
||||||
|
}
|
||||||
|
|
||||||
function confirm() {
|
function confirm() {
|
||||||
onconfirm?.()
|
onconfirm?.()
|
||||||
modal.closeModal!();
|
modal.closeModal!();
|
||||||
@@ -36,8 +45,8 @@
|
|||||||
{/snippet}
|
{/snippet}
|
||||||
{#snippet footer()}
|
{#snippet footer()}
|
||||||
<div class="flex items-center gap-4">
|
<div class="flex items-center gap-4">
|
||||||
<button class="btn-secondary" onclick={() => modal.closeModal()}
|
<button class="btn-secondary" onclick={cancel}
|
||||||
>{$_("cancel")}</button
|
>{$_(deny)}</button
|
||||||
>
|
>
|
||||||
<button
|
<button
|
||||||
id="confirm"
|
id="confirm"
|
||||||
|
|||||||
@@ -215,6 +215,7 @@
|
|||||||
"invalid-username": "Ungültiger Nutzername",
|
"invalid-username": "Ungültiger Nutzername",
|
||||||
"italian": "Italienisch",
|
"italian": "Italienisch",
|
||||||
"joined": "Beigetreten",
|
"joined": "Beigetreten",
|
||||||
|
"keep-private": "Ohne Veröffentlichung fortfahren",
|
||||||
"keep-original": "",
|
"keep-original": "",
|
||||||
"language": "Sprache",
|
"language": "Sprache",
|
||||||
"latitude": "Breitengrad",
|
"latitude": "Breitengrad",
|
||||||
|
|||||||
@@ -215,6 +215,7 @@
|
|||||||
"invalid-username": "Invalid username",
|
"invalid-username": "Invalid username",
|
||||||
"italian": "Italian",
|
"italian": "Italian",
|
||||||
"joined": "Joined",
|
"joined": "Joined",
|
||||||
|
"keep-private": "Keep private",
|
||||||
"keep-original": "Keep original",
|
"keep-original": "Keep original",
|
||||||
"language": "Language",
|
"language": "Language",
|
||||||
"latitude": "Latitude",
|
"latitude": "Latitude",
|
||||||
|
|||||||
@@ -213,6 +213,7 @@
|
|||||||
"invalid-date": "Fecha no válida",
|
"invalid-date": "Fecha no válida",
|
||||||
"invalid-username": "Usuario no válido",
|
"invalid-username": "Usuario no válido",
|
||||||
"italian": "Italiano",
|
"italian": "Italiano",
|
||||||
|
"keep-private": "Keep private",
|
||||||
"joined": "Afiliado",
|
"joined": "Afiliado",
|
||||||
"keep-original": "",
|
"keep-original": "",
|
||||||
"language": "Idioma",
|
"language": "Idioma",
|
||||||
|
|||||||
@@ -215,6 +215,7 @@
|
|||||||
"invalid-username": "Erabiltzailea ez da zuzena",
|
"invalid-username": "Erabiltzailea ez da zuzena",
|
||||||
"italian": "Italiera",
|
"italian": "Italiera",
|
||||||
"joined": "Sartu da",
|
"joined": "Sartu da",
|
||||||
|
"keep-private": "Keep private",
|
||||||
"keep-original": "",
|
"keep-original": "",
|
||||||
"language": "Hizkuntza",
|
"language": "Hizkuntza",
|
||||||
"latitude": "Latitudea",
|
"latitude": "Latitudea",
|
||||||
|
|||||||
@@ -215,6 +215,7 @@
|
|||||||
"invalid-username": "Nom d'utilisateur invalide",
|
"invalid-username": "Nom d'utilisateur invalide",
|
||||||
"italian": "Italien",
|
"italian": "Italien",
|
||||||
"joined": "Rejoint",
|
"joined": "Rejoint",
|
||||||
|
"keep-private": "Keep private",
|
||||||
"keep-original": "",
|
"keep-original": "",
|
||||||
"language": "Langue",
|
"language": "Langue",
|
||||||
"latitude": "Latitude",
|
"latitude": "Latitude",
|
||||||
|
|||||||
@@ -215,6 +215,7 @@
|
|||||||
"invalid-username": "Érvénytelen felhasználó",
|
"invalid-username": "Érvénytelen felhasználó",
|
||||||
"italian": "Olasz",
|
"italian": "Olasz",
|
||||||
"joined": "Joined",
|
"joined": "Joined",
|
||||||
|
"keep-private": "Keep private",
|
||||||
"keep-original": "",
|
"keep-original": "",
|
||||||
"language": "Nyelf",
|
"language": "Nyelf",
|
||||||
"latitude": "Szélesség",
|
"latitude": "Szélesség",
|
||||||
|
|||||||
@@ -215,6 +215,7 @@
|
|||||||
"invalid-username": "Nome utente non valido",
|
"invalid-username": "Nome utente non valido",
|
||||||
"italian": "Italiano",
|
"italian": "Italiano",
|
||||||
"joined": "Aggiunto",
|
"joined": "Aggiunto",
|
||||||
|
"keep-private": "Keep private",
|
||||||
"keep-original": "",
|
"keep-original": "",
|
||||||
"language": "Lingua",
|
"language": "Lingua",
|
||||||
"latitude": "Latitudine",
|
"latitude": "Latitudine",
|
||||||
|
|||||||
@@ -216,6 +216,7 @@
|
|||||||
"invalid-username": "Ongeldige gebruikersnaam",
|
"invalid-username": "Ongeldige gebruikersnaam",
|
||||||
"italian": "Italiaans",
|
"italian": "Italiaans",
|
||||||
"joined": "Aangesloten",
|
"joined": "Aangesloten",
|
||||||
|
"keep-private": "Keep private",
|
||||||
"keep-original": "",
|
"keep-original": "",
|
||||||
"language": "Taal",
|
"language": "Taal",
|
||||||
"latitude": "Breedtegraad",
|
"latitude": "Breedtegraad",
|
||||||
|
|||||||
@@ -215,6 +215,7 @@
|
|||||||
"invalid-username": "Błędna nazwa użytkownika",
|
"invalid-username": "Błędna nazwa użytkownika",
|
||||||
"italian": "Włoski",
|
"italian": "Włoski",
|
||||||
"joined": "Dołączono",
|
"joined": "Dołączono",
|
||||||
|
"keep-private": "Keep private",
|
||||||
"keep-original": "",
|
"keep-original": "",
|
||||||
"language": "Język",
|
"language": "Język",
|
||||||
"latitude": "Szerokość",
|
"latitude": "Szerokość",
|
||||||
|
|||||||
@@ -215,6 +215,7 @@
|
|||||||
"invalid-username": "Nome de usuário inválido",
|
"invalid-username": "Nome de usuário inválido",
|
||||||
"italian": "Italiano",
|
"italian": "Italiano",
|
||||||
"joined": "Joined",
|
"joined": "Joined",
|
||||||
|
"keep-private": "Keep private",
|
||||||
"keep-original": "",
|
"keep-original": "",
|
||||||
"language": "Língua",
|
"language": "Língua",
|
||||||
"latitude": "Latitude",
|
"latitude": "Latitude",
|
||||||
|
|||||||
@@ -215,6 +215,7 @@
|
|||||||
"invalid-username": "Некорректное имя пользователя",
|
"invalid-username": "Некорректное имя пользователя",
|
||||||
"italian": "Итальянский",
|
"italian": "Итальянский",
|
||||||
"joined": "Зарегистрирован",
|
"joined": "Зарегистрирован",
|
||||||
|
"keep-private": "Keep private",
|
||||||
"keep-original": "",
|
"keep-original": "",
|
||||||
"language": "Язык",
|
"language": "Язык",
|
||||||
"latitude": "Широта",
|
"latitude": "Широта",
|
||||||
|
|||||||
@@ -215,6 +215,7 @@
|
|||||||
"invalid-username": "无效用户名",
|
"invalid-username": "无效用户名",
|
||||||
"italian": "意大利语",
|
"italian": "意大利语",
|
||||||
"joined": "已加入",
|
"joined": "已加入",
|
||||||
|
"keep-private": "Keep private",
|
||||||
"keep-original": "",
|
"keep-original": "",
|
||||||
"language": "语言",
|
"language": "语言",
|
||||||
"latitude": "纬度",
|
"latitude": "纬度",
|
||||||
|
|||||||
@@ -51,6 +51,7 @@
|
|||||||
let loading: boolean = $state(false);
|
let loading: boolean = $state(false);
|
||||||
|
|
||||||
let newShares: TrailShare[] = [];
|
let newShares: TrailShare[] = [];
|
||||||
|
let publicList: boolean = $state(data.list?.public);
|
||||||
|
|
||||||
let shareConfirmModal: ConfirmModal;
|
let shareConfirmModal: ConfirmModal;
|
||||||
let publishConfirmModal: ConfirmModal;
|
let publishConfirmModal: ConfirmModal;
|
||||||
@@ -104,11 +105,8 @@
|
|||||||
});
|
});
|
||||||
|
|
||||||
async function checkPrerequisites() {
|
async function checkPrerequisites() {
|
||||||
if (
|
if ( $formData.public === true &&
|
||||||
(data.list?.public === false && $formData.public === true) ||
|
$formData.expand?.trails?.find(t => !t.public) !== undefined
|
||||||
($formData.public === true &&
|
|
||||||
(data.list?.expand?.trails?.length ?? 0) <
|
|
||||||
($formData.expand?.trails?.length ?? 0))
|
|
||||||
) {
|
) {
|
||||||
publishConfirmModal.openModal();
|
publishConfirmModal.openModal();
|
||||||
return false;
|
return false;
|
||||||
@@ -139,6 +137,7 @@
|
|||||||
icon: "check",
|
icon: "check",
|
||||||
text: $_("list-saved-successfully"),
|
text: $_("list-saved-successfully"),
|
||||||
});
|
});
|
||||||
|
publicList = $formData.public;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
show_toast({
|
show_toast({
|
||||||
type: "error",
|
type: "error",
|
||||||
@@ -334,7 +333,11 @@
|
|||||||
label={$_("description")}
|
label={$_("description")}
|
||||||
error={$errors.description}
|
error={$errors.description}
|
||||||
></Editor>
|
></Editor>
|
||||||
<Toggle name="public" label={$_("public")}></Toggle>
|
<Toggle
|
||||||
|
name="public"
|
||||||
|
label={$formData.public ? $_("public") : $_("private")}
|
||||||
|
icon={$formData.public ? "globe" : "lock"}
|
||||||
|
></Toggle>
|
||||||
<h3 class="text-xl font-semibold">
|
<h3 class="text-xl font-semibold">
|
||||||
{$_("trail", { values: { n: 2 } })}
|
{$_("trail", { values: { n: 2 } })}
|
||||||
</h3>
|
</h3>
|
||||||
@@ -463,8 +466,13 @@
|
|||||||
action="confirm"
|
action="confirm"
|
||||||
bind:this={shareConfirmModal}
|
bind:this={shareConfirmModal}
|
||||||
onconfirm={async () => {
|
onconfirm={async () => {
|
||||||
|
loading = true;
|
||||||
|
try {
|
||||||
await updateTrailShares();
|
await updateTrailShares();
|
||||||
await saveList();
|
await saveList();
|
||||||
|
} finally {
|
||||||
|
loading = false;
|
||||||
|
}
|
||||||
}}
|
}}
|
||||||
></ConfirmModal>
|
></ConfirmModal>
|
||||||
|
|
||||||
@@ -473,10 +481,24 @@
|
|||||||
text={$_("list-public-warning")}
|
text={$_("list-public-warning")}
|
||||||
title={$_("confirm-publish")}
|
title={$_("confirm-publish")}
|
||||||
action="confirm"
|
action="confirm"
|
||||||
|
deny="keep-private"
|
||||||
bind:this={publishConfirmModal}
|
bind:this={publishConfirmModal}
|
||||||
onconfirm={async () => {
|
onconfirm={async () => {
|
||||||
|
loading = true;
|
||||||
|
try {
|
||||||
await publishTrails();
|
await publishTrails();
|
||||||
await saveList();
|
await saveList();
|
||||||
|
} finally {
|
||||||
|
loading = false;
|
||||||
|
}
|
||||||
|
}}
|
||||||
|
oncancel={async () => {
|
||||||
|
loading = true;
|
||||||
|
try {
|
||||||
|
await saveList();
|
||||||
|
} finally {
|
||||||
|
loading = false;
|
||||||
|
}
|
||||||
}}
|
}}
|
||||||
></ConfirmModal>
|
></ConfirmModal>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user