Merge branch 'refactor/favs' into 'master'

feat: delete

See merge request gk1623/drp-48!32

Co-authored-by: Barf-Vader <47476490+Barf-Vader@users.noreply.github.com>
This commit is contained in:
Ling, Alex
2025-06-16 22:30:30 +00:00
3 changed files with 41 additions and 4 deletions

View File

@@ -85,9 +85,17 @@ export function haversineDistance(
return radius * 2 * Math.asin(Math.sqrt(e1));
}
export function collectTimings(study_space_hours: Table<"study_space_hours">[]) {
export function collectTimings(
study_space_hours: Omit<
Table<"study_space_hours">,
"id" | "created_at" | "updated_at" | "study_space_id"
>[]
) {
// Collect all timing entries
const timingsPerDay: Record<number, Table<"study_space_hours">[]> = {
const timingsPerDay: Record<
number,
Omit<Table<"study_space_hours">, "id" | "created_at" | "updated_at" | "study_space_id">[]
> = {
0: [],
1: [],
2: [],

View File

@@ -87,6 +87,12 @@
isFavourite = true;
}
}
async function deleteSpace() {
if (!confirm("Are you sure you want to delete this study space?")) return;
await supabase.from("study_spaces").delete().eq("id", space.id);
window.location.href = "/";
}
</script>
<Navbar>
@@ -192,7 +198,10 @@
<div class="actions">
{#if adminMode}
<Button href="/space/{space.id}/edit" type="link">Edit</Button>
<div class="buttonContainer">
<Button href="/space/{space.id}/edit" type="link">Edit</Button>
<Button type="button" style="red" onclick={deleteSpace}>Delete</Button>
</div>
{:else}
<Button onclick={() => (isReportVisible = true)} style="red">Report</Button>
{/if}
@@ -355,4 +364,9 @@
width: 3.75rem;
height: 3.75rem;
}
.buttonContainer {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 0.5rem;
}
</style>

View File

@@ -14,7 +14,8 @@
volumeTags,
gmapsLoader,
daysOfWeek,
timeToMins
timeToMins,
collectTimings
} from "$lib";
import { onMount } from "svelte";
import type { Json } from "$lib/database.js";
@@ -61,6 +62,19 @@
function checkTimings() {
let cannotExist = [] as number[];
let hasAllDays = Object.values(collectTimings(studySpaceData.opening_times)).every(
(item) => !(Array.isArray(item) && item.length === 0)
);
if (
(allDays.closes_at === "" || allDays.opens_at === "") &&
allDays.open_today_status === null &&
!hasAllDays
) {
alert(`No opening time provided for all other days.`);
return false;
}
const opensAtMinsAll = timeToMins(allDays.opens_at);
const closesAtMinsAll = timeToMins(allDays.closes_at);
if (opensAtMinsAll >= closesAtMinsAll) {
@@ -200,6 +214,7 @@
// Nothing is provided
if (
(allDays.closes_at != "" && allDays.opens_at != "") ||
studySpaceData.opening_times.length === 7 ||
allDays.open_today_status != null
) {
const { error: hoursErr } = await supabase