From cf86064efd2b10b24a2405fca1e84be47a6e8d03 Mon Sep 17 00:00:00 2001
From: Harsh Mahajan <127186841+HarshMN2345@users.noreply.github.com>
Date: Mon, 29 Sep 2025 16:52:35 +0530
Subject: [PATCH 1/4] feat: Add relative time tooltips in tables; fix Messaging
Topics empty state
---
.../billing/paymentHistory.svelte | 7 +++--
.../domains/+page.svelte | 10 +++++--
.../auth/+page.svelte | 11 +++++--
.../teams/team-[team]/members/+page.svelte | 4 +--
.../auth/user-[user]/identities/table.svelte | 4 +--
.../auth/user-[user]/memberships/+page.svelte | 4 +--
.../auth/user-[user]/targets/table.svelte | 4 +--
.../database-[database]/delete.svelte | 6 ++--
.../database-[database]/table.svelte | 4 +--
.../messaging/+page.svelte | 4 +--
.../message-[message]/updateTopics.svelte | 29 +++++++++++--------
.../messaging/topics/table.svelte | 6 ++--
.../topics/topic-[topic]/table.svelte | 4 +--
.../overview/(components)/table.svelte | 15 ++++++++--
14 files changed, 70 insertions(+), 42 deletions(-)
diff --git a/src/routes/(console)/organization-[organization]/billing/paymentHistory.svelte b/src/routes/(console)/organization-[organization]/billing/paymentHistory.svelte
index e6c787b0d..d8085642a 100644
--- a/src/routes/(console)/organization-[organization]/billing/paymentHistory.svelte
+++ b/src/routes/(console)/organization-[organization]/billing/paymentHistory.svelte
@@ -3,7 +3,7 @@
import { onMount } from 'svelte';
import { CardGrid, PaginationInline } from '$lib/components';
import { Button } from '$lib/elements/forms';
- import { toLocaleDate } from '$lib/helpers/date';
+ import DualTimeView from '$lib/components/dualTimeView.svelte';
import { formatCurrency } from '$lib/helpers/numbers';
import type { Invoice, InvoiceList } from '$lib/sdk/billing';
import { getApiEndpoint, sdk } from '$lib/stores/sdk';
@@ -112,8 +112,9 @@
{#each invoiceList?.invoices as invoice (invoice.$id)}
{@const status = invoice.status}
- {toLocaleDate(invoice.dueAt)}
+
+
+
{@const isDanger =
status === 'overdue' ||
diff --git a/src/routes/(console)/organization-[organization]/domains/+page.svelte b/src/routes/(console)/organization-[organization]/domains/+page.svelte
index 4e98e3d80..ec6c271e0 100644
--- a/src/routes/(console)/organization-[organization]/domains/+page.svelte
+++ b/src/routes/(console)/organization-[organization]/domains/+page.svelte
@@ -4,7 +4,7 @@
import { EmptySearch, PaginationWithLimit, ViewSelector } from '$lib/components/index.js';
import { Button } from '$lib/elements/forms';
import Link from '$lib/elements/link.svelte';
- import { toLocaleDateTime } from '$lib/helpers/date';
+ import DualTimeView from '$lib/components/dualTimeView.svelte';
import Container from '$lib/layout/container.svelte';
import { protocol } from '$routes/(console)/store.js';
import {
@@ -103,9 +103,13 @@
{:else if column.id === 'nameservers'}
{domain.nameservers || '-'}
{:else if column.id === 'expiry_date'}
- {domain?.expire ? toLocaleDateTime(domain.expire) : '-'}
+ {#if domain?.expire}
+
+ {:else}-{/if}
{:else if column.id === 'renewal'}
- {domain?.renewal ? toLocaleDateTime(domain.renewal) : '-'}
+ {#if domain?.renewal}
+
+ {:else}-{/if}
{:else if column.id === 'auto_renewal'}
{domain?.autoRenewal ? 'On' : 'Off'}
{/if}
diff --git a/src/routes/(console)/project-[region]-[project]/auth/+page.svelte b/src/routes/(console)/project-[region]-[project]/auth/+page.svelte
index 2bc7fb4fa..24b959222 100644
--- a/src/routes/(console)/project-[region]-[project]/auth/+page.svelte
+++ b/src/routes/(console)/project-[region]-[project]/auth/+page.svelte
@@ -15,7 +15,8 @@
SearchQuery
} from '$lib/components';
import { Button } from '$lib/elements/forms';
- import { toLocaleDate, toLocaleDateTime } from '$lib/helpers/date';
+ import { toLocaleDate } from '$lib/helpers/date';
+ import DualTimeView from '$lib/components/dualTimeView.svelte';
import { Container } from '$lib/layout';
import type { Models } from '@appwrite.io/console';
import { writable } from 'svelte/store';
@@ -196,9 +197,13 @@
{user.labels.join(', ')}
{:else if id === 'joined'}
- {toLocaleDateTime(user.registration)}
+
{:else if id === 'lastActivity'}
- {user.accessedAt ? toLocaleDate(user.accessedAt) : 'never'}
+ {#if user.accessedAt}
+
+ {:else}
+ never
+ {/if}
{:else}
{user[id]}
{/if}
diff --git a/src/routes/(console)/project-[region]-[project]/auth/teams/team-[team]/members/+page.svelte b/src/routes/(console)/project-[region]-[project]/auth/teams/team-[team]/members/+page.svelte
index 00d33151b..629c5bdda 100644
--- a/src/routes/(console)/project-[region]-[project]/auth/teams/team-[team]/members/+page.svelte
+++ b/src/routes/(console)/project-[region]-[project]/auth/teams/team-[team]/members/+page.svelte
@@ -6,7 +6,7 @@
import type { Models } from '@appwrite.io/console';
import { invalidate } from '$app/navigation';
import { base } from '$app/paths';
- import { toLocaleDateTime } from '$lib/helpers/date';
+ import DualTimeView from '$lib/components/dualTimeView.svelte';
import type { PageData } from './$types';
import CreateMember from '../createMembership.svelte';
import DeleteMembership from '../deleteMembership.svelte';
@@ -117,7 +117,7 @@
{membership.roles}
- {toLocaleDateTime(membership.joined)}
+
{/if}
{:else}
{identity[column.id]}
diff --git a/src/routes/(console)/project-[region]-[project]/auth/user-[user]/memberships/+page.svelte b/src/routes/(console)/project-[region]-[project]/auth/user-[user]/memberships/+page.svelte
index ca235085a..0deaed8da 100644
--- a/src/routes/(console)/project-[region]-[project]/auth/user-[user]/memberships/+page.svelte
+++ b/src/routes/(console)/project-[region]-[project]/auth/user-[user]/memberships/+page.svelte
@@ -7,7 +7,7 @@
import DeleteMembership from '../deleteMembership.svelte';
import type { Models } from '@appwrite.io/console';
import { trackEvent, Submit, trackError } from '$lib/actions/analytics';
- import { toLocaleDateTime } from '$lib/helpers/date';
+ import DualTimeView from '$lib/components/dualTimeView.svelte';
import {
Table,
Layout,
@@ -108,7 +108,7 @@
{membership.roles}
- {toLocaleDateTime(membership.joined)}
+
{/if}
{:else if column.id === '$createdAt'}
- {toLocaleDateTime(target[column.id])}
+
{:else}
{target[column.id]}
{/if}
diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/delete.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/delete.svelte
index 47a70368a..be59aa9ab 100644
--- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/delete.svelte
+++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/delete.svelte
@@ -8,7 +8,7 @@
import { addNotification } from '$lib/stores/notifications';
import { sdk } from '$lib/stores/sdk';
import { database } from './store';
- import { toLocaleDate } from '$lib/helpers/date';
+ import DualTimeView from '$lib/components/dualTimeView.svelte';
import { type Models, Query } from '@appwrite.io/console';
import { Spinner, Table } from '@appwrite.io/pink-svelte';
@@ -126,7 +126,9 @@
{#each tableItems as table}
{table.name}
- {toLocaleDate(table.updatedAt)}
+
+
+
{/each}
diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table.svelte
index 76334874f..f5d09f380 100644
--- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table.svelte
+++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table.svelte
@@ -6,7 +6,7 @@
import { Id } from '$lib/components';
import { Dependencies } from '$lib/constants';
import { Button } from '$lib/elements/forms';
- import { toLocaleDateTime } from '$lib/helpers/date';
+ import DualTimeView from '$lib/components/dualTimeView.svelte';
import { addNotification } from '$lib/stores/notifications';
import { canWriteTables } from '$lib/stores/roles';
import { sdk } from '$lib/stores/sdk';
@@ -76,7 +76,7 @@
{:else if column.id === 'name'}
{table.name}
{:else}
- {toLocaleDateTime(table[column.id])}
+
{/if}
{/each}
diff --git a/src/routes/(console)/project-[region]-[project]/messaging/+page.svelte b/src/routes/(console)/project-[region]-[project]/messaging/+page.svelte
index fcc732593..991d0ba6c 100644
--- a/src/routes/(console)/project-[region]-[project]/messaging/+page.svelte
+++ b/src/routes/(console)/project-[region]-[project]/messaging/+page.svelte
@@ -4,7 +4,7 @@
import { Empty, EmptyFilter, EmptySearch, Id, PaginationWithLimit } from '$lib/components';
import { hasPageQueries } from '$lib/components/filters';
import { Button } from '$lib/elements/forms';
- import { toLocaleDateTime } from '$lib/helpers/date';
+ import DualTimeView from '$lib/components/dualTimeView.svelte';
import { Container, ResponsiveContainerHeader } from '$lib/layout';
import { MessagingProviderType } from '@appwrite.io/console';
import CreateMessageDropdown from './createMessageDropdown.svelte';
@@ -208,7 +208,7 @@
{#if !message[column.id]}
-
{:else}
- {toLocaleDateTime(message[column.id])}
+
{/if}
{:else}
{message[column.id]}
diff --git a/src/routes/(console)/project-[region]-[project]/messaging/message-[message]/updateTopics.svelte b/src/routes/(console)/project-[region]-[project]/messaging/message-[message]/updateTopics.svelte
index 2fb9b53c4..c7af348e6 100644
--- a/src/routes/(console)/project-[region]-[project]/messaging/message-[message]/updateTopics.svelte
+++ b/src/routes/(console)/project-[region]-[project]/messaging/message-[message]/updateTopics.svelte
@@ -1,6 +1,7 @@