From d0326cfedd4a6ea7fea995ca38b8d8a7b24ec38a Mon Sep 17 00:00:00 2001 From: Abhinav Raut Date: Tue, 2 Jul 2024 03:10:00 +0530 Subject: [PATCH] more commits. --- frontend/src/App.vue | 2 +- frontend/src/assets/styles/main.scss | 2 +- frontend/src/components/account/Account.vue | 46 +++++++ frontend/src/components/account/Profile.vue | 0 .../src/components/account/SidebarNav.vue | 51 +++++++ .../conversationlist/ConversationList.vue | 93 ++++++------- frontend/src/router/index.js | 9 +- frontend/src/utils/datetime.js | 23 +++- frontend/src/views/AccountView.vue | 15 ++- frontend/src/views/ConversationView.vue | 2 +- internal/automation/automation.go | 126 +++++++++++++++--- .../automation/{processor.go => evaluator.go} | 88 +++++++----- internal/automation/models/models.go | 33 ++++- internal/automation/queries.sql | 3 +- internal/conversation/conversations.go | 25 +++- internal/conversation/queries.sql | 34 +++++ internal/message/messages.go | 11 +- 17 files changed, 421 insertions(+), 142 deletions(-) create mode 100644 frontend/src/components/account/Account.vue create mode 100644 frontend/src/components/account/Profile.vue create mode 100644 frontend/src/components/account/SidebarNav.vue rename internal/automation/{processor.go => evaluator.go} (61%) diff --git a/frontend/src/App.vue b/frontend/src/App.vue index f12cd5f0..f4d11fe1 100644 --- a/frontend/src/App.vue +++ b/frontend/src/App.vue @@ -61,7 +61,7 @@ const navLinks = [ title: 'Account', component: 'account', label: '', - icon: 'lucide:circle-user-round', + icon: 'lucide:settings', }, ] const userStore = useUserStore() diff --git a/frontend/src/assets/styles/main.scss b/frontend/src/assets/styles/main.scss index 4aae2c0f..e3447c9a 100644 --- a/frontend/src/assets/styles/main.scss +++ b/frontend/src/assets/styles/main.scss @@ -9,7 +9,7 @@ } .tab-container-default { - padding: 15px 15px; + padding: 2rem 2rem; } .bg-success { diff --git a/frontend/src/components/account/Account.vue b/frontend/src/components/account/Account.vue new file mode 100644 index 00000000..632ec336 --- /dev/null +++ b/frontend/src/components/account/Account.vue @@ -0,0 +1,46 @@ + + + diff --git a/frontend/src/components/account/Profile.vue b/frontend/src/components/account/Profile.vue new file mode 100644 index 00000000..e69de29b diff --git a/frontend/src/components/account/SidebarNav.vue b/frontend/src/components/account/SidebarNav.vue new file mode 100644 index 00000000..b3e1387f --- /dev/null +++ b/frontend/src/components/account/SidebarNav.vue @@ -0,0 +1,51 @@ + + + diff --git a/frontend/src/components/conversationlist/ConversationList.vue b/frontend/src/components/conversationlist/ConversationList.vue index 6097db63..0e6eceae 100644 --- a/frontend/src/components/conversationlist/ConversationList.vue +++ b/frontend/src/components/conversationlist/ConversationList.vue @@ -5,33 +5,6 @@

Conversations

-
- -
@@ -58,16 +31,33 @@
- - - - - - Work in progress. - - +
+ +
@@ -88,13 +78,16 @@ - -
- +
+
+ +
+
+ All conversations loaded 😎 +
@@ -108,18 +101,11 @@ import { CONVERSATION_LIST_TYPE, CONVERSATION_PRE_DEFINED_FILTERS } from '@/cons import { Error } from '@/components/ui/error' import { Skeleton } from '@/components/ui/skeleton' -import { Input } from '@/components/ui/input' -import { Search, ListFilter } from 'lucide-vue-next' import { Tabs, TabsList, TabsTrigger, } from '@/components/ui/tabs' -import { - Popover, - PopoverContent, - PopoverTrigger, -} from '@/components/ui/popover' import { Button } from '@/components/ui/button' import { Select, @@ -179,6 +165,11 @@ const hasErrored = computed(() => { return conversationStore.conversations.errorMessage ? true : false }) +const everythingLoaded = computed(() => { + return !conversationStore.conversations.errorMessage && !emptyConversations.value +}) + + const conversationsLoading = computed(() => { return conversationStore.conversations.loading }) diff --git a/frontend/src/router/index.js b/frontend/src/router/index.js index 30c4497e..aec87c8a 100644 --- a/frontend/src/router/index.js +++ b/frontend/src/router/index.js @@ -26,10 +26,11 @@ const routes = [ component: UserLoginView }, { - path: '/account', - name: "account", - component: AccountView - }, + path: '/account/:page?', + name: 'account', + component: AccountView, + props: true, + } ] const router = createRouter({ diff --git a/frontend/src/utils/datetime.js b/frontend/src/utils/datetime.js index cedb87ea..f8cc6359 100644 --- a/frontend/src/utils/datetime.js +++ b/frontend/src/utils/datetime.js @@ -1,10 +1,23 @@ -import { format } from 'date-fns' +import { format, differenceInMinutes, differenceInHours, differenceInDays } from 'date-fns'; -export function formatTime (t) { +export function formatTime(t) { try { - return format(t, 'h:mm a') + const now = new Date(); + const minutesDifference = differenceInMinutes(now, t); + const hoursDifference = differenceInHours(now, t); + const daysDifference = differenceInDays(now, t); + + if (minutesDifference < 60) { + return `${minutesDifference} minutes ago`; + } else if (hoursDifference < 24) { + return `${hoursDifference} hours ago`; + } else if (daysDifference < 7) { + return `${daysDifference} days ago`; + } else { + return format(t, 'MMMM d, yyyy h:mm a'); + } } catch (error) { - console.error("error parsing time", error) + console.error("error parsing time", error, "time", t) return '' } -} \ No newline at end of file +} diff --git a/frontend/src/views/AccountView.vue b/frontend/src/views/AccountView.vue index 097fb208..bf54be14 100644 --- a/frontend/src/views/AccountView.vue +++ b/frontend/src/views/AccountView.vue @@ -1,8 +1,9 @@ - - \ No newline at end of file +import Account from '@/components/account/Account.vue' + + + diff --git a/frontend/src/views/ConversationView.vue b/frontend/src/views/ConversationView.vue index e4ebd0e9..f403df83 100644 --- a/frontend/src/views/ConversationView.vue +++ b/frontend/src/views/ConversationView.vue @@ -1,7 +1,7 @@