implemented storing and loading of message settings
Signed-off-by: Stephan Richter <s.richter@srsoftware.de>
This commit is contained in:
@@ -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">
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user