diff --git a/frontend/src/Components/PermissionEditor.svelte b/frontend/src/Components/PermissionEditor.svelte
index ec5b56e1..af81e957 100644
--- a/frontend/src/Components/PermissionEditor.svelte
+++ b/frontend/src/Components/PermissionEditor.svelte
@@ -42,10 +42,6 @@
} else error(resp);
}
- function onSelect(entry){
- addMember(entry);
- }
-
onMount(loadPermissions);
@@ -65,7 +61,7 @@
| {t('add_object',{object:t('member')})} |
-
+
|
diff --git a/frontend/src/routes/poll/Edit.svelte b/frontend/src/routes/poll/Edit.svelte
index 41e240b4..44d80598 100644
--- a/frontend/src/routes/poll/Edit.svelte
+++ b/frontend/src/routes/poll/Edit.svelte
@@ -20,7 +20,7 @@
let members = $state([]);
function addMember(member){
- for (let [id,name] of Object.entries(member)) update_permissions({user_id:+id,permission:4});
+ update_permissions({user_id:+member.id,permission:4});
return true;
}
diff --git a/frontend/src/routes/project/View.svelte b/frontend/src/routes/project/View.svelte
index fc4ecac4..24659282 100644
--- a/frontend/src/routes/project/View.svelte
+++ b/frontend/src/routes/project/View.svelte
@@ -29,7 +29,7 @@
let state_available=$derived(new_state.name && new_state.code && !project.allowed_states[new_state.code]);
async function addMember(user){
- update({new_member:+user.id});
+ return await update({new_member:+user.id});
}
async function addState(){
diff --git a/frontend/src/routes/task/Add.svelte b/frontend/src/routes/task/Add.svelte
index fddb9cd9..0e9d5bcc 100644
--- a/frontend/src/routes/task/Add.svelte
+++ b/frontend/src/routes/task/Add.svelte
@@ -29,7 +29,8 @@
let router = useTinyRouter();
function addMember(member){
- for (let uid of Object.keys(member)) task.members[uid] = project.members[uid];
+ let uid = member.id;
+ task.members[uid] = project.members[uid];
}
function flat(json){
@@ -44,10 +45,9 @@
async function getCandidates(text){
const origin = parent_task ? parent_task.members : project.members;
- const candidates = Object.values(origin)
+ return Object.values(origin)
.filter(member => member.user.name.toLowerCase().includes(text.toLowerCase()))
- .map(member => [member.user.id,member.user.name]);
- return Object.fromEntries(candidates);
+ .map(member => {return { id:member.user.id,display:member.user.name}});
}
async function load(){
diff --git a/frontend/src/routes/task/View.svelte b/frontend/src/routes/task/View.svelte
index d8077dcb..d2a001d3 100644
--- a/frontend/src/routes/task/View.svelte
+++ b/frontend/src/routes/task/View.svelte
@@ -37,9 +37,8 @@
router.navigate(`/task/${id}/add_subtask`);
}
- async function addMember(entry){
- const ids = Object.keys(entry);
- if (ids) update({new_member:+ids.pop()});
+ async function addMember(newMember){
+ return await update({new_member:+newMember.id});
}
async function addTime(){
@@ -64,10 +63,10 @@
async function getCandidates(text){
const origin = task.parent ? task.parent.members : project.members;
- const candidates = Object.values(origin)
+ return Object.values(origin)
.filter(member => member.user.name.toLowerCase().includes(text.toLowerCase()))
- .map(member => [member.user.id,member.user.name]);
- return Object.fromEntries(candidates);
+ .map(member => { return {id:member.user.id,display:member.user.name}});
+
}
function gotoKanban(){
@@ -177,6 +176,8 @@
});
if (resp.ok){
yikes();
+ let json = await resp.json();
+ if (json.members) task.members = json.members;
return true;
} else {
error(resp);
diff --git a/frontend/src/routes/wiki/View.svelte b/frontend/src/routes/wiki/View.svelte
index 78d87608..eb36254a 100644
--- a/frontend/src/routes/wiki/View.svelte
+++ b/frontend/src/routes/wiki/View.svelte
@@ -22,9 +22,8 @@
async function addMember(entry){
let newMembers = JSON.parse(JSON.stringify(page.members));
- for (var id of Object.keys(entry)){
- if (!newMembers[id]) newMembers[id] = { permission : {name:'READ_ONLY'} };
- }
+ let id = entry.id;
+ if (!newMembers[id]) newMembers[id] = { permission : {name:'READ_ONLY'} };
return patch({members:newMembers});
}
@@ -74,7 +73,7 @@
});
if (resp.ok){
var json = await resp.json();
- return Object.fromEntries(Object.values(json).filter(nonMember).map(user => [user.id,user.name]));
+ return Object.values(json).filter(nonMember).map(user => { return {id:user.id,display:user.name}});
} else {
return [];
}