working on project list update by event
This commit is contained in:
@@ -29,7 +29,7 @@ public class MessageApi extends BaseHandler{
|
|||||||
addCors(ex);
|
addCors(ex);
|
||||||
Optional<Token> token = SessionToken.from(ex).map(Token::of);
|
Optional<Token> token = SessionToken.from(ex).map(Token::of);
|
||||||
var user = userService().loadUser(token);
|
var user = userService().loadUser(token);
|
||||||
//if (user.isEmpty()) return unauthorized(ex); // TODO
|
if (user.isEmpty()) return unauthorized(ex); // TODO
|
||||||
|
|
||||||
var headers = ex.getResponseHeaders();
|
var headers = ex.getResponseHeaders();
|
||||||
var addr = ex.getRemoteAddress();
|
var addr = ex.getRemoteAddress();
|
||||||
|
|||||||
@@ -1,19 +1,26 @@
|
|||||||
<script>
|
<script>
|
||||||
import { onMount } from 'svelte';
|
import { onDestroy, onMount } from 'svelte';
|
||||||
import { useTinyRouter } from 'svelte-tiny-router';
|
import { useTinyRouter } from 'svelte-tiny-router';
|
||||||
|
|
||||||
import { api } from '../../urls.svelte.js';
|
import { api, eventStream } from '../../urls.svelte.js';
|
||||||
import { error, yikes } from '../../warn.svelte';
|
import { error, yikes } from '../../warn.svelte';
|
||||||
import { t } from '../../translations.svelte.js';
|
import { t } from '../../translations.svelte.js';
|
||||||
|
|
||||||
const router = useTinyRouter();
|
const router = useTinyRouter();
|
||||||
|
let events = null;
|
||||||
let projects = $state(null);
|
let projects = $state(null);
|
||||||
let companies = $state(null);
|
let companies = $state(null);
|
||||||
let showClosed = $state(router.query.closed == "show");
|
let showClosed = $state(router.query.closed == "show");
|
||||||
|
|
||||||
let sortedProjects = $derived.by(() => Object.values(projects).sort((a, b) => a.name.localeCompare(b.name)));
|
let sortedProjects = $derived.by(() => Object.values(projects).sort((a, b) => a.name.localeCompare(b.name)));
|
||||||
|
|
||||||
|
function handleUpdate(evt){
|
||||||
|
let json = JSON.parse(evt.data);
|
||||||
|
if (json.project) projects[json.project.id] = json.project;
|
||||||
|
}
|
||||||
|
|
||||||
async function loadProjects(){
|
async function loadProjects(){
|
||||||
|
events = eventStream(handleUpdate,handleUpdate,null);
|
||||||
let url = api('company/list');
|
let url = api('company/list');
|
||||||
let resp = await fetch(url,{credentials:'include'});
|
let resp = await fetch(url,{credentials:'include'});
|
||||||
if (resp.ok){
|
if (resp.ok){
|
||||||
@@ -66,6 +73,9 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
onMount(loadProjects);
|
onMount(loadProjects);
|
||||||
|
onDestroy(() => {
|
||||||
|
if (events) events.close();
|
||||||
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<svelte:head>
|
<svelte:head>
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import static de.srsoftware.umbrella.core.model.Permission.OWNER;
|
|||||||
import static de.srsoftware.umbrella.core.model.Status.OPEN;
|
import static de.srsoftware.umbrella.core.model.Status.OPEN;
|
||||||
import static de.srsoftware.umbrella.core.model.Status.PREDEFINED;
|
import static de.srsoftware.umbrella.core.model.Status.PREDEFINED;
|
||||||
import static de.srsoftware.umbrella.messagebus.MessageBus.messageBus;
|
import static de.srsoftware.umbrella.messagebus.MessageBus.messageBus;
|
||||||
|
import static de.srsoftware.umbrella.messagebus.events.Event.EventType.CREATE;
|
||||||
import static de.srsoftware.umbrella.messagebus.events.Event.EventType.UPDATE;
|
import static de.srsoftware.umbrella.messagebus.events.Event.EventType.UPDATE;
|
||||||
import static de.srsoftware.umbrella.project.Constants.CONFIG_DATABASE;
|
import static de.srsoftware.umbrella.project.Constants.CONFIG_DATABASE;
|
||||||
import static java.lang.Boolean.TRUE;
|
import static java.lang.Boolean.TRUE;
|
||||||
@@ -256,7 +257,7 @@ public class ProjectModule extends BaseHandler implements ProjectService {
|
|||||||
var tagList = arr.toList().stream().filter(elem -> elem instanceof String).map(String.class::cast).toList();
|
var tagList = arr.toList().stream().filter(elem -> elem instanceof String).map(String.class::cast).toList();
|
||||||
tagService().save(PROJECT,prj.id(),null,tagList);
|
tagService().save(PROJECT,prj.id(),null,tagList);
|
||||||
}
|
}
|
||||||
|
messageBus().dispatch(new ProjectEvent(user,prj, CREATE));
|
||||||
return sendContent(ex,prj);
|
return sendContent(ex,prj);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user