Calculating the distance (#255)

* migra for distance

* adding distance calculator

* adding ability to store home address

* improve distance calculation

* calculating distance

* show distance in grid view

* upgrading dependencies

* moving to react 19

* ability to clone a job

* fixing tests

* polishing
This commit is contained in:
Christian Kellner
2026-01-22 16:09:36 +01:00
committed by GitHub
parent 51b4e51f3f
commit 4dd0370ec1
47 changed files with 1135 additions and 615 deletions

View File

@@ -37,12 +37,25 @@ function compileSettings(rows, configValues) {
* @returns {Record<string, any>}
*/
export async function refreshSettingsCache() {
const rows = SqliteConnection.query(`SELECT name, value FROM settings`);
const rows = SqliteConnection.query(`SELECT name, value FROM settings WHERE user_id IS NULL`);
const configValues = await readConfigFromStorage();
cachedSettingsConfig = compileSettings(rows, configValues);
return cachedSettingsConfig;
}
/**
* Retrieves user-specific settings from the database.
* @param {string} userId
* @returns {Record<string, any>}
*/
export function getUserSettings(userId) {
if (!userId || typeof userId !== 'string') {
return {};
}
const userRows = SqliteConnection.query(`SELECT name, value FROM settings WHERE user_id = @userId`, { userId });
return compileSettings(userRows, {});
}
/**
* Get the compiled settings config. Loads it once and caches the result.
* @returns {Record<string, any>}
@@ -83,10 +96,12 @@ export function upsertSettings(settingsMapOrEntry, userId = null) {
SqliteConnection.execute(
`INSERT INTO settings (id, create_date, name, value, user_id)
VALUES (@id, @create_date, @name, @value, @userId)
ON CONFLICT(name) DO UPDATE SET value = excluded.value`,
ON CONFLICT(name, IFNULL(user_id, 'GLOBAL_SETTING')) DO UPDATE SET value = excluded.value`,
{ id, create_date, name, value: json, userId },
);
}
// keep cache in sync
refreshSettingsCache();
// keep cache in sync (only for global settings)
if (userId == null) {
refreshSettingsCache();
}
}