Skip to content

Commit

Permalink
finished UI
Browse files Browse the repository at this point in the history
  • Loading branch information
harshithmullapudi committed Mar 6, 2025
1 parent 8f75cc1 commit 64cc683
Show file tree
Hide file tree
Showing 70 changed files with 535 additions and 415 deletions.
8 changes: 5 additions & 3 deletions apps/server/prisma/schema.prisma
Original file line number Diff line number Diff line change
Expand Up @@ -290,13 +290,15 @@ model Task {
status String?
metadata Json @default("{}")
// This is used in recurring tasks
startTime DateTime?
endTime DateTime?
recurrence String[]
scheduleText String?
dueDate DateTime?
remindAt DateTime?
tags String[]
dueDate DateTime?
remindAt DateTime?
tags String[]
source Json?
Expand Down
2 changes: 1 addition & 1 deletion apps/server/src/app.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ import { ReplicationModule } from 'modules/replication/replication.module';
import { SuggestionModule } from 'modules/suggestion/suggestion.module';
import { SummaryModule } from 'modules/summary/summary.module';
import { SyncActionsModule } from 'modules/sync-actions/sync-actions.module';
import { TaskOccurenceModule } from 'modules/task-occurence/task-occurence.model';
import { TaskOccurenceModule } from 'modules/task-occurrence/task-occurrence.model';
import { TasksModule } from 'modules/tasks/tasks.module';
import { TasksHookModule } from 'modules/tasks-hook/tasks-hooks.module';
import { TriggerdevModule } from 'modules/triggerdev/triggerdev.module';
Expand Down
33 changes: 26 additions & 7 deletions apps/server/src/modules/pages/pages.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -158,14 +158,33 @@ export class PagesService {
);
}

return this.prisma.page.create({
data: {
...pageData,
description: finalDescription,
workspace: { connect: { id: workspaceId } },
...(parentId && { parent: { connect: { id: parentId } } }),
},
const page = await this.prisma.$transaction(async (tx) => {
// Try to find existing page
let page = await tx.page.findFirst({
where: {
title: pageData.title,
type: pageData.type,
workspaceId,
deleted: null,
},
select: PageSelect,
});

if (!page) {
page = await this.prisma.page.create({
data: {
...pageData,
description: finalDescription,
workspace: { connect: { id: workspaceId } },
...(parentId && { parent: { connect: { id: parentId } } }),
},
});
}

return page;
});

return page;
}

async updatePage(
Expand Down
4 changes: 2 additions & 2 deletions apps/server/src/modules/sync-actions/sync-actions.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ export default class SyncActionsService {
orderBy: {
sequenceId: 'asc',
},
distinct: ['modelName', 'workspaceId', 'modelId', 'action'],
distinct: ['modelId'],
});

const deleteModelIds = new Set(
Expand Down Expand Up @@ -98,7 +98,7 @@ export default class SyncActionsService {
orderBy: {
sequenceId: 'asc',
},
distinct: ['modelId', 'modelName', 'workspaceId', 'action'],
distinct: ['modelId'],
});

return {
Expand Down
7 changes: 7 additions & 0 deletions apps/server/src/modules/sync-actions/sync-actions.utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,12 @@ export async function getWorkspaceId(
});
return task.workspaceId;

case ModelName.TaskOccurrence:
const taskOccurrence = await prisma.taskOccurrence.findUnique({
where: { id: modelId },
});
return taskOccurrence.workspaceId;

case ModelName.Template:
const template = await prisma.template.findUnique({
where: { id: modelId },
Expand Down Expand Up @@ -89,6 +95,7 @@ export async function getModelData(
Template: prisma.template,
Page: prisma.page,
Task: prisma.task,
TaskOccurrence: prisma.taskOccurrence,
Conversation: prisma.conversation,
ConversationHistory: prisma.conversationHistory,
List: prisma.list,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ import {
import { AuthGuard } from 'modules/auth/auth.guard';
import { Workspace } from 'modules/auth/session.decorator';

import { TaskOccurenceService } from './task-occurence.service';
import { TaskOccurenceService } from './task-occurrence.service';

@Controller({
version: '1',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ import { PrismaModule, PrismaService } from 'nestjs-prisma';
import { PagesModule } from 'modules/pages/pages.module';
import { UsersService } from 'modules/users/users.service';

import { TaskOccurenceController } from './task-occurence.controller';
import { TaskOccurenceService } from './task-occurence.service';
import { TaskOccurenceController } from './task-occurrence.controller';
import { TaskOccurenceService } from './task-occurrence.service';

@Module({
imports: [PrismaModule, PagesModule],
Expand Down
2 changes: 1 addition & 1 deletion apps/server/src/modules/tasks-hook/tasks-hook.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import { generateSummaryTask } from 'triggers/task/generate-summary';

import { IntegrationsService } from 'modules/integrations/integrations.service';
import { PagesService } from 'modules/pages/pages.service';
import { TaskOccurenceService } from 'modules/task-occurence/task-occurence.service';
import { TaskOccurenceService } from 'modules/task-occurrence/task-occurrence.service';
import { UsersService } from 'modules/users/users.service';

import {
Expand Down
2 changes: 1 addition & 1 deletion apps/server/src/modules/tasks-hook/tasks-hooks.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { PrismaModule, PrismaService } from 'nestjs-prisma';

import { IntegrationsService } from 'modules/integrations/integrations.service';
import { PagesModule } from 'modules/pages/pages.module';
import { TaskOccurenceService } from 'modules/task-occurence/task-occurence.service';
import { TaskOccurenceService } from 'modules/task-occurrence/task-occurrence.service';
import { UsersService } from 'modules/users/users.service';

import { TaskHooksService } from './tasks-hook.service';
Expand Down
2 changes: 1 addition & 1 deletion apps/server/src/modules/tasks/tasks.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import { ContentModule } from 'modules/content/content.module';
import { ConversationModule } from 'modules/conversation/conversation.module';
import { IntegrationsService } from 'modules/integrations/integrations.service';
import { PagesService } from 'modules/pages/pages.service';
import { TaskOccurenceService } from 'modules/task-occurence/task-occurence.service';
import { TaskOccurenceService } from 'modules/task-occurrence/task-occurrence.service';
import { UsersService } from 'modules/users/users.service';

import { TasksAIController } from './tasks-ai.controller';
Expand Down
2 changes: 1 addition & 1 deletion apps/server/src/modules/tasks/tasks.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import { PrismaService } from 'nestjs-prisma';

import { IntegrationsService } from 'modules/integrations/integrations.service';
import { PagesService } from 'modules/pages/pages.service';
import { TaskOccurenceService } from 'modules/task-occurence/task-occurence.service';
import { TaskOccurenceService } from 'modules/task-occurrence/task-occurrence.service';

import {
getCurrentTaskIds,
Expand Down
12 changes: 11 additions & 1 deletion apps/webapp/common/editor/task-extension/task-component.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,15 @@ import { getCreateTaskPropsOnSource } from 'modules/tasks/add-task/utils';

import type { TaskType } from 'common/types';

import { useApplication } from 'hooks/application';

import { useCreateTaskMutation } from 'services/tasks';

import { useContextStore } from 'store/global-context-provider';

import { TaskMetadata } from './task-metadata';
import { EditorContext } from '../editor-context';
import { TaskInfo } from 'modules/tasks/task-info';

// eslint-disable-next-line @typescript-eslint/no-explicit-any
export const TaskComponent = observer((props: any) => {
Expand All @@ -26,6 +29,7 @@ export const TaskComponent = observer((props: any) => {

const { tasksStore } = useContextStore();
const task = tasksStore.getTaskWithId(taskId);
const { selectedTasks, setHoverTask, hoverTask } = useApplication();

const { mutate: addTaskMutation, isLoading } = useCreateTaskMutation({
onSuccess: (data: TaskType) => {
Expand All @@ -40,7 +44,7 @@ export const TaskComponent = observer((props: any) => {
}, 500);

React.useEffect(() => {
if (!taskId && content && !content.includes('[') && !isLoading) {
if (!taskId && content && !isLoading) {
debounceAddTask({
title: content,
...getCreateTaskPropsOnSource(source, date),
Expand All @@ -56,6 +60,11 @@ export const TaskComponent = observer((props: any) => {
'items-center inline-flex gap-2 pb-0.5 items-start px-2 hover:bg-grayAlpha-100 rounded w-fit',
props.selected && 'bg-grayAlpha-300',
)}
onMouseOver={() => {
if (selectedTasks.length === 0 && task.id !== hoverTask) {
setHoverTask(task.id);
}
}}
>
<div
className={cn('flex items-start shrink-0 gap-2 py-1')}
Expand All @@ -70,6 +79,7 @@ export const TaskComponent = observer((props: any) => {
className={cn('flex items-start shrink-0 gap-2 py-1')}
contentEditable={false}
>
<TaskInfo task={task} />
<TaskMetadata taskId={task.id} />
</div>
)}
Expand Down
1 change: 1 addition & 0 deletions apps/webapp/common/types/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,4 @@ export * from './activity';
export * from './task';
export * from './conversation';
export * from './list';
export * from './task-occurrence';
11 changes: 11 additions & 0 deletions apps/webapp/common/types/task-occurrence.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
export interface TaskOccurrenceType {
id: string;
createdAt: string;
updatedAt: string;
startTime?: string;
endTime?: string;
status?: string;
workspaceId: string;
pageId: string;
taskId: string;
}
4 changes: 2 additions & 2 deletions apps/webapp/common/wrappers/bootstrap-data.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -29,22 +29,22 @@ export function BootstrapWrapper({ children }: Props) {
workspaceStore,
integrationAccountsStore,
pagesStore,
activityStore,
tasksStore,
conversationsStore,
conversationHistoryStore,
listsStore,
taskOccurrencesStore,
} = useContextStore();

const MODEL_STORE_MAP = {
[MODELS.Workspace]: workspaceStore,
[MODELS.IntegrationAccount]: integrationAccountsStore,
[MODELS.Activity]: activityStore,
[MODELS.Task]: tasksStore,
[MODELS.Page]: pagesStore,
[MODELS.Conversation]: conversationsStore,
[MODELS.ConversationHistory]: conversationHistoryStore,
[MODELS.List]: listsStore,
[MODELS.TaskOccurrence]: taskOccurrencesStore,
};

React.useEffect(() => {
Expand Down
6 changes: 3 additions & 3 deletions apps/webapp/common/wrappers/socket-data-sync.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ export const SocketDataSyncWrapper: React.FC<Props> = observer(
integrationAccountsStore,
pagesStore,
tasksStore,
activityStore,
taskOccurrencesStore,
conversationsStore,
conversationHistoryStore,
listsStore,
Expand All @@ -53,7 +53,7 @@ export const SocketDataSyncWrapper: React.FC<Props> = observer(
async function initSocket() {
const socket = io(publicRuntimeConfig.NEXT_PUBLIC_BACKEND_HOST, {
query: {
workspaceId: workspaceStore.workspace.id,
workspaceId: user.workspace.id,
userId: user.id,
},
withCredentials: true,
Expand All @@ -67,7 +67,7 @@ export const SocketDataSyncWrapper: React.FC<Props> = observer(

[MODELS.Page]: pagesStore,
[MODELS.Task]: tasksStore,
[MODELS.Activity]: activityStore,
[MODELS.TaskOccurrence]: taskOccurrencesStore,
[MODELS.Conversation]: conversationsStore,
[MODELS.ConversationHistory]: conversationHistoryStore,
[MODELS.List]: listsStore,
Expand Down
4 changes: 2 additions & 2 deletions apps/webapp/common/wrappers/socket-data-util.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,13 @@ import { runInAction } from 'mobx';

import type { SyncActionRecord } from 'common/types';

import { saveActivityData } from 'store/activity';
import { saveConversationHistorytData } from 'store/conversation-history';
import { saveConversationData } from 'store/conversations';
import { saveIntegrationAccountData } from 'store/integration-accounts';
import { saveListData } from 'store/lists';
import { MODELS } from 'store/models';
import { savePageData } from 'store/pages';
import { saveTaskOccurrencesData } from 'store/task-occurrences';
import { saveTaskData } from 'store/tasks';
import { saveWorkspaceData } from 'store/workspace';

Expand Down Expand Up @@ -46,7 +46,7 @@ export async function saveSocketData(
[MODELS.ConversationHistory]: saveConversationHistorytData,
[MODELS.Page]: savePageData,
[MODELS.Task]: saveTaskData,
[MODELS.Activity]: saveActivityData,
[MODELS.TaskOccurrence]: saveTaskOccurrencesData,
[MODELS.List]: saveListData,
};

Expand Down
2 changes: 2 additions & 0 deletions apps/webapp/common/wrappers/workspace-store-provider.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ export const WorkspaceStoreInit = observer(
conversationsStore,
conversationHistoryStore,
listsStore,
taskOccurrencesStore,
} = useContextStore();

const currentWorkspace = useWorkspace();
Expand Down Expand Up @@ -49,6 +50,7 @@ export const WorkspaceStoreInit = observer(
conversationsStore.load(),
conversationHistoryStore.load(),
listsStore.load(),
taskOccurrencesStore.load(),
]);

// eslint-disable-next-line react-hooks/exhaustive-deps
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { observer } from 'mobx-react-lite';
import React from 'react';
import { useHotkeys } from 'react-hotkeys-hook';

import { ScheduleDialog } from 'modules/tasks/schedule';
import { ScheduleDialog } from 'modules/tasks/metadata';

import { SCOPES } from 'common/shortcut-scopes';

Expand Down Expand Up @@ -72,7 +72,7 @@ export const DialogViewsProvider = observer(
};

useHotkeys(
['s', 'd'],
['s', 'p'],
(event) => {
switch (event.key) {
case 's':
Expand Down
4 changes: 2 additions & 2 deletions apps/webapp/modules/lists/list-tasks.tsx
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { observer } from 'mobx-react-lite';
import React from 'react';

import { PlanList } from 'modules/tasks/category/plan';
import { StatusList } from 'modules/tasks/category/status';
import { PlanList } from 'modules/tasks/group-view/plan';
import { StatusList } from 'modules/tasks/group-view/status';
import { Filters } from 'modules/tasks/filters';
import { Header } from 'modules/tasks/header';

Expand Down
Loading

0 comments on commit 64cc683

Please sign in to comment.