diff --git a/packages/nc-gui/components/dashboard/settings/Modal.vue b/packages/nc-gui/components/dashboard/settings/Modal.vue
index 83ad269ed4..894817c320 100644
--- a/packages/nc-gui/components/dashboard/settings/Modal.vue
+++ b/packages/nc-gui/components/dashboard/settings/Modal.vue
@@ -48,8 +48,6 @@ const { $e } = useNuxtApp()
const { t } = useI18n()
-const { isDataSourceLimitReached } = storeToRefs(useBases())
-
const dataSourcesReload = ref(false)
const tabsInfo: TabGroup = {
diff --git a/packages/nc-gui/components/dlg/InviteDlg.vue b/packages/nc-gui/components/dlg/InviteDlg.vue
index 5ba335e95f..2e75ff669b 100644
--- a/packages/nc-gui/components/dlg/InviteDlg.vue
+++ b/packages/nc-gui/components/dlg/InviteDlg.vue
@@ -12,8 +12,6 @@ const props = defineProps<{
}>()
const emit = defineEmits(['update:modelValue'])
-const { baseRoles, workspaceRoles } = useRoles()
-
const basesStore = useBases()
const workspaceStore = useWorkspace()
@@ -28,10 +26,6 @@ const orderedRoles = computed(() => {
return props.type === 'base' ? ProjectRoles : WorkspaceUserRoles
})
-const userRoles = computed(() => {
- return props.type === 'base' ? baseRoles.value : workspaceRoles.value
-})
-
const inviteData = reactive({
email: '',
roles: orderedRoles.value.NO_ACCESS,
diff --git a/packages/nc-gui/components/notification/Card.vue b/packages/nc-gui/components/notification/Card.vue
index 93be3bb725..c45060205e 100644
--- a/packages/nc-gui/components/notification/Card.vue
+++ b/packages/nc-gui/components/notification/Card.vue
@@ -4,83 +4,126 @@ import InfiniteLoading from 'v3-infinite-loading'
const notificationStore = useNotification()
-const { notifications, isRead, pageInfo } = storeToRefs(notificationStore)
+const { isMobileMode } = useGlobal()
-/*
-const groupType = computed({
- get() {
- return isRead.value ? 'read' : 'unread'
- },
- set(value) {
- isRead.value = value === 'read'
- notificationStore.loadNotifications()
- },
-})
-*/
+const container = ref()
+
+const { height } = useElementSize(container)
+
+const { loadUnReadNotifications, loadReadNotifications, markAllAsRead } = notificationStore
+
+const { unreadNotifications, readNotifications, readPageInfo, unreadPageInfo, notificationTab } = storeToRefs(notificationStore)
-
-
-
-
- {{ $t('general.notification') }}
-
-
-
- {{ $t('activity.markAllAsRead') }}
-
-
-
-
-
-
-
-
-
{{ $t('msg.noNewNotifications') }}
-
-
-
-
-
-
-
-
+
+
+
+
{{ $t('general.notification') }}s
-
-
-
+
+
+
+
+
+ {{ $t('activity.markAllAsRead') }}
+
+
+
+
+
+ Unread
+
-
-
+
+
+ {{ $t('msg.noNewNotifications') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Read
+
-
-
+
+
+
+ {{ $t('msg.noNewNotifications') }}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/nc-gui/components/notification/Menu.vue b/packages/nc-gui/components/notification/Menu.vue
index a143e9229d..8c307f3188 100644
--- a/packages/nc-gui/components/notification/Menu.vue
+++ b/packages/nc-gui/components/notification/Menu.vue
@@ -1,38 +1,24 @@
-
-
+
+
+
-
- {{
- notificationStore.unreadCount
- }}
-
+
+
-
+
-
-
diff --git a/packages/nc-gui/components/project/AccessSettings.vue b/packages/nc-gui/components/project/AccessSettings.vue
index 64a3784661..9e64fa5dd5 100644
--- a/packages/nc-gui/components/project/AccessSettings.vue
+++ b/packages/nc-gui/components/project/AccessSettings.vue
@@ -153,11 +153,11 @@ onMounted(async () => {
})
const selected = reactive<{
- [key: number]: boolean
+ [key: string]: boolean
}>({})
const toggleSelectAll = (value: boolean) => {
- filteredCollaborators.value.forEach((_, i) => {
+ filteredCollaborators.value.forEach((_) => {
selected[_.id] = value
})
}
diff --git a/packages/nc-gui/components/project/AllTables.vue b/packages/nc-gui/components/project/AllTables.vue
index 90fdbbb1d3..41fdaeeca3 100644
--- a/packages/nc-gui/components/project/AllTables.vue
+++ b/packages/nc-gui/components/project/AllTables.vue
@@ -1,16 +1,13 @@
diff --git a/packages/nc-gui/components/project/View.vue b/packages/nc-gui/components/project/View.vue
index 8ac05afb26..b6be94c9d5 100644
--- a/packages/nc-gui/components/project/View.vue
+++ b/packages/nc-gui/components/project/View.vue
@@ -35,14 +35,10 @@ const currentBase = computedAsync(async () => {
const { isUIAllowed, baseRoles } = useRoles()
-const { base } = storeToRefs(useBase())
-
const { projectPageTab } = storeToRefs(useConfigStore())
const { isMobileMode } = useGlobal()
-const baseSettingsState = ref('')
-
const userCount = computed(() => (activeProjectId.value ? basesUser.value.get(activeProjectId.value)?.length : 0))
watch(
diff --git a/packages/nc-gui/components/smartsheet/Toolbar.vue b/packages/nc-gui/components/smartsheet/Toolbar.vue
index e460782bc9..8b8f30b7b2 100644
--- a/packages/nc-gui/components/smartsheet/Toolbar.vue
+++ b/packages/nc-gui/components/smartsheet/Toolbar.vue
@@ -1,8 +1,6 @@
diff --git a/packages/nc-gui/components/smartsheet/column/LinkOptions.vue b/packages/nc-gui/components/smartsheet/column/LinkOptions.vue
index 4fc04b34c5..3c4fd075c0 100644
--- a/packages/nc-gui/components/smartsheet/column/LinkOptions.vue
+++ b/packages/nc-gui/components/smartsheet/column/LinkOptions.vue
@@ -1,5 +1,5 @@
@@ -171,108 +232,112 @@ watch(commentsWrapperEl, () => {
{{ $t('activity.startCommenting') }}
-
)+$/g, ''), }) - reloadTrigger?.trigger() + // Increase Comment Count in rowMeta + Object.assign(row.value, { + rowMeta: { + ...row.value.rowMeta, + commentCount: (row.value.rowMeta.commentCount ?? 0) + 1, + }, + }) + + // reloadTrigger?.trigger() await Promise.all([loadComments(), loadAudits()]) comment.value = '' } catch (e: any) { - message.error(e.message) + comments.value = comments.value.filter((c) => !(c.id ?? '').startsWith('temp-')) + message.error( + await extractSdkResponseErrorMsg( + e as Error & { + response: any + }, + ), + ) } $e('a:row-expand:comment') @@ -244,7 +327,10 @@ const [useProvideExpandedFormStore, useExpandedFormStore] = useInjectionState((m Object.assign(row.value, { row: data, - rowMeta: {}, + rowMeta: { + ...row.value.rowMeta, + new: false, + }, oldRow: { ...data }, }) @@ -406,7 +492,9 @@ const [useProvideExpandedFormStore, useExpandedFormStore] = useInjectionState((m Object.assign(row.value, { row: record, oldRow: { ...record }, - rowMeta: {}, + rowMeta: { + ...row.value.rowMeta, + }, }) } catch (e: any) { message.error(`${t('msg.error.errorLoadingRecord')}`) @@ -449,6 +537,7 @@ const [useProvideExpandedFormStore, useExpandedFormStore] = useInjectionState((m comments, audits, isAuditLoading, + resolveComment, isCommentsLoading, saveComment, comment, diff --git a/packages/nc-gui/store/notification.ts b/packages/nc-gui/store/notification.ts index 04502a1598..71fe9cb05b 100644 --- a/packages/nc-gui/store/notification.ts +++ b/packages/nc-gui/store/notification.ts @@ -1,74 +1,121 @@ import { defineStore } from 'pinia' import type { NotificationType } from 'nocodb-sdk' -import type { Socket } from 'socket.io-client' -import io from 'socket.io-client' export const useNotification = defineStore('notificationStore', () => { - const notifications = ref
+ You have been mentioned. +
++ <%- name %> + has mentioned you in a comment on the + <%- display_name %> + in the + <%- table %> / <%- base %> . +
+ + ++ NocoDB is solution for all your database needs. +
++ Welcome to NocoDB! +
++ We’re excited to have you onboard. +
+ ++ NocoDB is solution for all your database needs. +
+