Use exact Users.name for current task lookup and auto-load tasks
This commit is contained in:
@@ -447,8 +447,18 @@ app.get('/api/tasks/users', async (c) => {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
const me = pb.authStore.model;
|
const me = pb.authStore.model;
|
||||||
|
let meRecord: any = me;
|
||||||
let users: any[] = [];
|
let users: any[] = [];
|
||||||
let warning = '';
|
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 {
|
try {
|
||||||
users = await pb.collection(PB_AUTH_COLLECTION).getFullList({
|
users = await pb.collection(PB_AUTH_COLLECTION).getFullList({
|
||||||
sort: 'email',
|
sort: 'email',
|
||||||
@@ -456,20 +466,22 @@ app.get('/api/tasks/users', async (c) => {
|
|||||||
});
|
});
|
||||||
} catch (listErr) {
|
} catch (listErr) {
|
||||||
warning = 'Users list is restricted by PocketBase rules; showing current user only.';
|
warning = 'Users list is restricted by PocketBase rules; showing current user only.';
|
||||||
users = me ? [me] : [];
|
users = meRecord ? [meRecord] : [];
|
||||||
}
|
}
|
||||||
|
|
||||||
return c.json({
|
return c.json({
|
||||||
success: true,
|
success: true,
|
||||||
me: {
|
me: {
|
||||||
id: me?.id || '',
|
id: meRecord?.id || '',
|
||||||
email: me?.email || '',
|
email: meRecord?.email || '',
|
||||||
name: (me?.name || me?.username || me?.email || 'Me') as string,
|
name: (meRecord?.name || meRecord?.username || meRecord?.email || 'Me') as string,
|
||||||
|
lookupName: String(meRecord?.name || '').trim(),
|
||||||
},
|
},
|
||||||
users: users.map((user: any) => ({
|
users: users.map((user: any) => ({
|
||||||
id: user.id,
|
id: user.id,
|
||||||
email: user.email || '',
|
email: user.email || '',
|
||||||
name: user.name || user.username || user.email || user.id,
|
name: user.name || user.username || user.email || user.id,
|
||||||
|
lookupName: String(user.name || '').trim(),
|
||||||
})),
|
})),
|
||||||
warning: warning || undefined,
|
warning: warning || undefined,
|
||||||
});
|
});
|
||||||
@@ -495,7 +507,17 @@ app.get('/api/tasks/list', async (c) => {
|
|||||||
try {
|
try {
|
||||||
const me = pb.authStore.model;
|
const me = pb.authStore.model;
|
||||||
const meId = String(me?.id || '').trim();
|
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 requestedUserName = String(c.req.query('userName') || '').trim();
|
||||||
const requestedUserId = String(c.req.query('userId') || '').trim();
|
const requestedUserId = String(c.req.query('userId') || '').trim();
|
||||||
const targetUserName = requestedUserName || meName;
|
const targetUserName = requestedUserName || meName;
|
||||||
|
|||||||
+28
-5
@@ -317,12 +317,15 @@
|
|||||||
usersCache = Array.isArray(data.users) ? data.users : [];
|
usersCache = Array.isArray(data.users) ? data.users : [];
|
||||||
const meId = String(data?.me?.id || '').trim();
|
const meId = String(data?.me?.id || '').trim();
|
||||||
const meName = data?.me?.name || data?.me?.email || 'Me';
|
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 = '';
|
taskUserSelect.innerHTML = '';
|
||||||
for (const user of usersCache) {
|
for (const user of usersCache) {
|
||||||
const opt = document.createElement('option');
|
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.value = lookupName;
|
||||||
opt.dataset.userId = user.id;
|
opt.dataset.userId = user.id;
|
||||||
opt.textContent = `${user.name || user.email || user.id}${user.id === meId ? ' (Me)' : ''}`;
|
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) {
|
function bind(id, handler) {
|
||||||
document.getElementById(id).addEventListener('click', async () => {
|
document.getElementById(id).addEventListener('click', async () => {
|
||||||
try {
|
try {
|
||||||
@@ -417,9 +442,7 @@
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
ensurePocketBaseClient()
|
bootstrapTasksPage();
|
||||||
.then(() => updatePbStatus())
|
|
||||||
.catch((error) => writeOutput({ error: error?.message || String(error) }));
|
|
||||||
loadHealth();
|
loadHealth();
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
|
|||||||
Reference in New Issue
Block a user