Files
OSIT-AE-App-Svelte/src/lib/stores/ae_idaa_stores.ts
Scott Idem 94e4fad061 chore(stores): remove unused default properties from ae_loc, ae_sess, events_slct, idaa_loc
Audited all three legacy persisted-store files for properties with zero
references in src/. Removed ~119 lines of dead defaults:

- ae_loc: qr_scanner_version, ds, entire mod block (archives/events/journals/posts/sponsorships)
- ae_sess: hub, mod block (archives/events/journals/posts/sponsorships/testing), download
- events_loc: ds
- events_sess: ds_loaded
- events_slct: abstract_*, badge_template_*, device_*, exhibit_tracking_*, lq__presenter_obj
- idaa_loc: ds, idaa_cfg_json, top-level qry__* (each submodule has its own), novi_rate_limited_until, novi_*_base_url (read from site_cfg_json, not idaa_loc)

No version bumps needed — removing fields from defaults is backwards-compatible.
svelte-check passes: 0 errors, 0 warnings.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 15:29:48 -04:00

189 lines
5.8 KiB
TypeScript

import { AE_IDAA_LOC_VERSION } from '$lib/stores/store_versions';
import { persisted } from 'svelte-persisted-store';
import { writable } from 'svelte/store';
import type { Writable } from 'svelte/store';
import type { key_val } from '$lib/stores/ae_stores';
/* *** BEGIN *** Initialize idaa_local_data_struct */
// Persisted to localStorage. Retains Novi identity, auth state, and IDAA
// query preferences across sessions. Wiped on schema change via store_versions.ts.
const idaa_local_data_struct: key_val = {
__version: AE_IDAA_LOC_VERSION,
name: 'Aether - IDAA',
title: `OSIT's Æ IDAA`,
novi_uuid: null,
novi_email: null,
novi_full_name: null,
// True after a successful Novi API verification (UUID confirmed to be a real Novi member).
// False on load, on verification failure, or for non-Novi sign-in paths.
novi_verified: false,
// Timestamp (ms since epoch) when the last successful verification occurred.
// Used to cache verification results and avoid repeated Novi API calls.
novi_verified_ts: null,
// Populated from $ae_loc.site_cfg_json at IDAA layout mount — not managed here.
// See routes/idaa/(idaa)/+layout.svelte for the override logic.
novi_admin_li: [],
novi_trusted_li: [],
novi_jitsi_mod_li: [],
archives: {
enabled: 'enabled', // all, disabled, enabled
hidden: 'not_hidden', // all, hidden, not_hidden
limit: 150,
offset: 0,
edit_kv: {}, // Tracks which archive objects are being edited.
edit__archive_obj: null,
edit__archive_content_obj: null
},
bb: {
enabled: 'enabled', // all, disabled, enabled
hidden: 'not_hidden', // all, hidden, not_hidden
limit: 50,
offset: 0,
edit_kv: {}, // Tracks which post objects are being edited.
edit__post_obj: null,
edit__post_comment_obj: null,
show_list__post_obj_li: true,
qry__enabled: 'enabled', // all, disabled, enabled
qry__hidden: 'not_hidden', // all, hidden, not_hidden
qry__limit: 25,
qry__offset: 0,
qry__order_by: 'updated_on', // For the IDB index query
qry__order_by_li: { updated_on: 'DESC', created_on: 'DESC' } // For the SQL query
},
recovery_meetings: {
edit_kv: {}, // Tracks which meeting objects are being edited.
edit__event_obj: null,
qry__enabled: 'enabled', // all, disabled, enabled
qry__hidden: 'not_hidden', // all, hidden, not_hidden
qry__limit: 100,
qry__order_by: 'updated_on', // For the IDB index query; name, updated_on/created_on
qry__order_by_li: {
priority: 'DESC',
sort: 'DESC',
updated_on: 'DESC',
created_on: 'DESC',
name: 'ASC'
}, // For the SQL query
qry__offset: 0,
qry__fulltext_str: null,
qry__physical: null,
qry__type: null,
qry__virtual: null,
// Favorites filter — when true, only show meetings the member has starred.
// Favorites are stored server-side in event.mod_meetings_json.favorite (array of Novi UUIDs),
// so they persist across browsers without requiring a Novi API write capability.
qry__favorites_only: false,
// Collapse the "Meeting Info" data store panel between the search bar and results.
// Persisted so the user's preference survives page reloads.
ds_info_collapsed: false
}
};
export const idaa_loc: Writable<key_val> = persisted(
'ae_idaa_loc',
idaa_local_data_struct
);
/* *** BEGIN *** Initialize idaa_session_data_struct */
// In-memory only (not persisted). Resets on page load.
const idaa_session_data_struct: key_val = {
log_lvl: 1,
archives: {
qry__status: null,
show__modal_edit__archive_id: null,
show__modal_view__archive_id: null,
show__modal_edit__archive_content_id: null,
show__modal_view__archive_content_id: null,
obj_changed: false
},
bb: {
qry__status: null,
edit__post_obj: null,
show__inline_edit__post_obj: null,
show__modal_edit__post_id: null,
show__modal_view__post_id: null,
obj_changed: false
},
recovery_meetings: {
qry__status: null,
qry__fulltext_str: null,
search_version: 0,
edit__event_obj: null,
status_qry__last_request_str: null,
show__modal_edit: false,
show__modal_view: false,
show__modal_edit__event_id: null,
show__modal_view__event_id: null,
obj_changed: false,
attend_platform: null // 'Zoom', 'Google Meet', 'Microsoft Teams', etc.
}
};
export const idaa_sess = writable(idaa_session_data_struct);
// In-memory only — tabs can have different IDAA object selections.
const idaa_slct_obj_template: key_val = {
// Top level
event_id: null,
event_obj: {},
event_obj_li: [],
archive_id: null,
archive_obj: {},
archive_obj_li: [],
archive_content_id: null,
archive_content_obj: {},
archive_content_obj_li: [],
post_id: null,
post_obj: {},
post_obj_li: [],
post_comment_id: null,
post_comment_obj: {},
post_comment_obj_li: []
};
export const idaa_slct = writable(idaa_slct_obj_template);
// Fine-grained triggers — set an ID to signal that object type needs re-fetching.
const idaa_trig_template: key_val = {
archive_id: false,
archive_content_li: false,
event_id: false,
post_id: false,
update_zoom_full_url: false
};
export const idaa_trig: Writable<key_val> = writable(idaa_trig_template);
// Promise map — keyed by object type; used to track in-flight async operations.
const idaa_prom_template: key_val = {
archive_id: false,
archive_content_li: false,
event_id: false,
post_id: false
};
export const idaa_prom: Writable<key_val> = writable(idaa_prom_template);