feat(drive): move UI to {created,updated}_by
This commit is contained in:
@@ -40,7 +40,11 @@
|
||||
const entries = $derived(
|
||||
raw.map((it): ResourceEntry => {
|
||||
const isFile = it.resource_type === 'file';
|
||||
const ownerId = it.resource.owner_id ?? null;
|
||||
// §14 provenance — prefer `created_by` (who put the item
|
||||
// into the system) over the deprecated `owner_id`. Fall
|
||||
// back to `owner_id` for pre-D7 rows whose `created_by`
|
||||
// column wasn't backfilled.
|
||||
const ownerId = it.resource.created_by ?? it.resource.owner_id ?? null;
|
||||
return {
|
||||
id: it.resource.id,
|
||||
name: it.resource.name,
|
||||
@@ -106,7 +110,7 @@
|
||||
});
|
||||
raw = reset ? page.items : [...raw, ...page.items];
|
||||
cursor = page.next_cursor;
|
||||
void owners.resolve(page.items.map((i) => i.resource.owner_id));
|
||||
void owners.resolve(page.items.map((i) => i.resource.created_by ?? i.resource.owner_id));
|
||||
} catch (e) {
|
||||
console.error('favorites: load error', e);
|
||||
error = t('errors_loadFailed', 'Failed to load items');
|
||||
|
||||
@@ -42,6 +42,8 @@ function withOneFile() {
|
||||
modified_at: 0,
|
||||
name: 'photo.png',
|
||||
owner_id: 'me',
|
||||
created_by: 'me',
|
||||
updated_by: 'me',
|
||||
folder_id: 'root',
|
||||
path: '/photo.png',
|
||||
size: 10,
|
||||
|
||||
@@ -1797,7 +1797,9 @@
|
||||
<div class="grid-meta">
|
||||
<span class="grid-meta__date">{relativeTimeAgo(folder.modified_at)}</span>
|
||||
</div>
|
||||
<div class="owner-cell">{ownerLabel(folder.owner_id, session.user?.id ?? null)}</div>
|
||||
<div class="owner-cell">
|
||||
{ownerLabel(folder.created_by ?? folder.owner_id, session.user?.id ?? null)}
|
||||
</div>
|
||||
<div class="type-cell">{t('files.file_types.folder', 'Folder')}</div>
|
||||
<div class="size-cell">—</div>
|
||||
<div class="date-cell">{formatDate(folder.modified_at)}</div>
|
||||
@@ -1927,7 +1929,9 @@
|
||||
<span class="grid-meta__date">{relativeTimeAgo(file.modified_at)}</span>
|
||||
{#if file.size != null}<span class="grid-meta__size">{formatBytes(file.size)}</span>{/if}
|
||||
</div>
|
||||
<div class="owner-cell">{ownerLabel(file.owner_id, session.user?.id ?? null)}</div>
|
||||
<div class="owner-cell">
|
||||
{ownerLabel(file.created_by ?? file.owner_id, session.user?.id ?? null)}
|
||||
</div>
|
||||
<div class="type-cell">{typeLabel(file.category)}</div>
|
||||
<div class="size-cell">{file.size != null ? formatBytes(file.size) : ''}</div>
|
||||
<div class="date-cell">{formatDate(file.modified_at)}</div>
|
||||
|
||||
@@ -91,6 +91,8 @@ function fileItem(id: string, name: string) {
|
||||
modified_at: 0,
|
||||
name,
|
||||
owner_id: 'me',
|
||||
created_by: 'me',
|
||||
updated_by: 'me',
|
||||
folder_id: 'home',
|
||||
path: '/' + name,
|
||||
size: 4,
|
||||
@@ -111,6 +113,8 @@ function folderItem(id: string, name: string) {
|
||||
modified_at: 0,
|
||||
name,
|
||||
owner_id: 'me',
|
||||
created_by: 'me',
|
||||
updated_by: 'me',
|
||||
parent_id: 'home',
|
||||
path: '/' + name,
|
||||
etag: 'e'
|
||||
|
||||
@@ -35,6 +35,8 @@ function photo(id: string) {
|
||||
modified_at: 0,
|
||||
name: id + '.jpg',
|
||||
owner_id: 'me',
|
||||
created_by: 'me',
|
||||
updated_by: 'me',
|
||||
folder_id: 'home',
|
||||
path: '/' + id + '.jpg',
|
||||
size: 100,
|
||||
|
||||
@@ -42,7 +42,11 @@
|
||||
const entries = $derived(
|
||||
raw.map((it): ResourceEntry => {
|
||||
const isFile = it.resource_type === 'file';
|
||||
const ownerId = it.resource.owner_id ?? null;
|
||||
// §14 provenance — Recent's mental model is "who touched
|
||||
// this recently", so `updated_by` (the last mutator) is
|
||||
// preferred over `created_by` (who put it in). Fall back
|
||||
// to `owner_id` for pre-D7 rows with no provenance.
|
||||
const ownerId = it.resource.updated_by ?? it.resource.owner_id ?? null;
|
||||
return {
|
||||
id: it.resource.id,
|
||||
name: it.resource.name,
|
||||
@@ -118,7 +122,7 @@
|
||||
});
|
||||
raw = reset ? page.items : [...raw, ...page.items];
|
||||
cursor = page.next_cursor;
|
||||
void owners.resolve(page.items.map((i) => i.resource.owner_id));
|
||||
void owners.resolve(page.items.map((i) => i.resource.updated_by ?? i.resource.owner_id));
|
||||
} catch (e) {
|
||||
console.error('recent: load error', e);
|
||||
error = t('errors_loadFailed', 'Failed to load items');
|
||||
|
||||
@@ -46,6 +46,8 @@ function withOneFile() {
|
||||
modified_at: 0,
|
||||
name: 'notes.txt',
|
||||
owner_id: 'me',
|
||||
created_by: 'me',
|
||||
updated_by: 'me',
|
||||
folder_id: 'root',
|
||||
path: '/notes.txt',
|
||||
size: 4,
|
||||
|
||||
@@ -47,6 +47,8 @@ function grantItem() {
|
||||
modified_at: 0,
|
||||
name: 'Docs',
|
||||
owner_id: 'me',
|
||||
created_by: 'me',
|
||||
updated_by: 'me',
|
||||
parent_id: null,
|
||||
path: '/Docs',
|
||||
etag: 'e'
|
||||
|
||||
Reference in New Issue
Block a user