implemented storing and loading of message settings

Signed-off-by: Stephan Richter <s.richter@srsoftware.de>
This commit is contained in:
2026-01-17 18:27:38 +01:00
parent ea30907bfe
commit b176cd1f6b
6 changed files with 51 additions and 7 deletions

View File

@@ -1,7 +1,8 @@
<script> <script>
import { onMount } from 'svelte';
import { t } from '../../translations.svelte'; import { t } from '../../translations.svelte';
import { api, patch } from '../../urls.svelte'; import { api, get, patch } from '../../urls.svelte';
import { error, yikes } from '../../warn.svelte'; import { error, warn, yikes } from '../../warn.svelte';
let instant = false; let instant = false;
let silent = false; let silent = false;
@@ -31,6 +32,40 @@
saveTimes(); saveTimes();
} }
async function loadSettings(){
const url = api('message/settings');
const res = await get(url);
if (res.ok){
yikes();
const json = await res.json();
if (json.hours){
at8 = json.hours.includes(8);
at9 = json.hours.includes(9);
at10 = json.hours.includes(10);
at11 = json.hours.includes(11);
at12 = json.hours.includes(12);
at13 = json.hours.includes(13);
at14 = json.hours.includes(14);
at15 = json.hours.includes(15);
at16 = json.hours.includes(16);
at17 = json.hours.includes(17);
at18 = json.hours.includes(18);
at19 = json.hours.includes(19);
at20 = json.hours.includes(20);
at21 = json.hours.includes(21);
at22 = json.hours.includes(22);
instant = false;
silent = !(at8 || at9 || at10 || at11 || at12 || at13 || at14 || at15 || at16 || at17 || at18 || at19 || at20 || at21 || at22);
} else {
instant = json.instantly;
silent = !instant;
at8 = at9 = at10 = at11 = at12 = at13 = at14 = at15 = at16 = at17 = at18 = at19 = at20 = at21 = at22 = false;
}
} else {
error(res);
}
}
async function saveTimes(){ async function saveTimes(){
let data = { let data = {
instantly : instant, instantly : instant,
@@ -55,6 +90,8 @@
let res = await patch(url,data); let res = await patch(url,data);
if (res.ok){ if (res.ok){
yikes(); yikes();
warn(t('saved'));
setTimeout(yikes,2500);
} else { } else {
error(res); error(res);
} }
@@ -65,6 +102,8 @@
silent = !(at8 || at9 || at10 || at11 || at12 || at13 || at14 || at15 || at16 || at17 || at18 || at19 || at20 || at21 || at22); silent = !(at8 || at9 || at10 || at11 || at12 || at13 || at14 || at15 || at16 || at17 || at18 || at19 || at20 || at21 || at22);
saveTimes(); saveTimes();
} }
onMount(loadSettings)
</script> </script>
<fieldset class="message settings"> <fieldset class="message settings">

View File

@@ -114,6 +114,7 @@ public class MessageSystem extends BaseHandler implements PostBox, EventListener
var head = path.pop(); var head = path.pop();
return switch (head){ return switch (head){
case null -> listMessages(ex,user.get()); case null -> listMessages(ex,user.get());
case SETTINGS -> getSettings(ex,user.get());
default -> super.doGet(path,ex); default -> super.doGet(path,ex);
}; };
} catch (NumberFormatException e){ } catch (NumberFormatException e){
@@ -142,6 +143,10 @@ public class MessageSystem extends BaseHandler implements PostBox, EventListener
} }
} }
private boolean getSettings(HttpExchange ex, UmbrellaUser user) throws IOException {
return sendContent(ex,db.getSettings(user));
}
private boolean listMessages(HttpExchange ex, UmbrellaUser user) throws IOException { private boolean listMessages(HttpExchange ex, UmbrellaUser user) throws IOException {
var messages = queue.stream().filter(e -> e.isFor(user)).map(e -> summary(e, user.language())).toList(); var messages = queue.stream().filter(e -> e.isFor(user)).map(e -> summary(e, user.language())).toList();
return sendContent(ex,messages); return sendContent(ex,messages);

View File

@@ -12,7 +12,7 @@ public class Instantly implements Settings{
} }
@Override @Override
public boolean sendAt(int scheduledHour) { public boolean sendAt(Integer scheduledHour) {
return false; return false;
} }

View File

@@ -21,8 +21,8 @@ public class Schedule implements Settings{
} }
@Override @Override
public boolean sendAt(int scheduledHour) { public boolean sendAt(Integer scheduledHour) {
return hours.contains(scheduledHour); return scheduledHour != null && hours.contains(scheduledHour);
} }
@Override @Override

View File

@@ -6,5 +6,5 @@ import de.srsoftware.tools.Mappable;
public interface Settings extends Mappable { public interface Settings extends Mappable {
boolean sendAt(int scheduledHour); boolean sendAt(Integer scheduledHour);
} }

View File

@@ -7,7 +7,7 @@ import java.util.Map;
public class Silent implements Settings{ public class Silent implements Settings{
@Override @Override
public boolean sendAt(int scheduledHour) { public boolean sendAt(Integer scheduledHour) {
return false; return false;
} }