Use exact Users.name for current task lookup and auto-load tasks

This commit is contained in:
2026-03-29 03:00:32 +00:00
parent 6abaf6c778
commit 49824ea3c6
2 changed files with 55 additions and 10 deletions
+27 -5
View File
@@ -447,8 +447,18 @@ app.get('/api/tasks/users', async (c) => {
try {
const me = pb.authStore.model;
let meRecord: any = me;
let users: any[] = [];
let warning = '';
if (me?.id) {
try {
meRecord = await pb.collection(PB_AUTH_COLLECTION).getOne(String(me.id), {
fields: 'id,email,name,username',
});
} catch {
meRecord = me;
}
}
try {
users = await pb.collection(PB_AUTH_COLLECTION).getFullList({
sort: 'email',
@@ -456,20 +466,22 @@ app.get('/api/tasks/users', async (c) => {
});
} catch (listErr) {
warning = 'Users list is restricted by PocketBase rules; showing current user only.';
users = me ? [me] : [];
users = meRecord ? [meRecord] : [];
}
return c.json({
success: true,
me: {
id: me?.id || '',
email: me?.email || '',
name: (me?.name || me?.username || me?.email || 'Me') as string,
id: meRecord?.id || '',
email: meRecord?.email || '',
name: (meRecord?.name || meRecord?.username || meRecord?.email || 'Me') as string,
lookupName: String(meRecord?.name || '').trim(),
},
users: users.map((user: any) => ({
id: user.id,
email: user.email || '',
name: user.name || user.username || user.email || user.id,
lookupName: String(user.name || '').trim(),
})),
warning: warning || undefined,
});
@@ -495,7 +507,17 @@ app.get('/api/tasks/list', async (c) => {
try {
const me = pb.authStore.model;
const meId = String(me?.id || '').trim();
const meName = String(me?.name || me?.username || me?.email || '').trim();
let meRecord: any = me;
if (meId) {
try {
meRecord = await pb.collection(PB_AUTH_COLLECTION).getOne(meId, {
fields: 'id,email,name,username',
});
} catch {
meRecord = me;
}
}
const meName = String(meRecord?.name || '').trim();
const requestedUserName = String(c.req.query('userName') || '').trim();
const requestedUserId = String(c.req.query('userId') || '').trim();
const targetUserName = requestedUserName || meName;
+28 -5
View File
@@ -317,12 +317,15 @@
usersCache = Array.isArray(data.users) ? data.users : [];
const meId = String(data?.me?.id || '').trim();
const meName = data?.me?.name || data?.me?.email || 'Me';
const meLookupName = String(data?.me?.name || data?.me?.email || '').trim();
const meLookupName = String(data?.me?.lookupName || data?.me?.name || '').trim();
taskUserSelect.innerHTML = '';
for (const user of usersCache) {
const opt = document.createElement('option');
const lookupName = String(user.name || user.email || user.id || '').trim();
const lookupName = String(user.lookupName || user.name || '').trim();
if (!lookupName) {
continue;
}
opt.value = lookupName;
opt.dataset.userId = user.id;
opt.textContent = `${user.name || user.email || user.id}${user.id === meId ? ' (Me)' : ''}`;
@@ -394,6 +397,28 @@
});
}
async function bootstrapTasksPage() {
try {
const client = await ensurePocketBaseClient();
const config = await getPocketBaseConfig();
if (client.authStore?.token) {
try {
await client.collection(config.collection).authRefresh();
} catch {
}
}
await updatePbStatus();
if (client.authStore?.isValid) {
await loadUsers();
await loadTasks();
}
} catch (error) {
writeOutput({ error: error?.message || String(error) });
}
}
function bind(id, handler) {
document.getElementById(id).addEventListener('click', async () => {
try {
@@ -417,9 +442,7 @@
}
});
ensurePocketBaseClient()
.then(() => updatePbStatus())
.catch((error) => writeOutput({ error: error?.message || String(error) }));
bootstrapTasksPage();
loadHealth();
</script>
</body>