diff --git a/packages/api/.eslintrc.json b/packages/new_api/.eslintrc.json similarity index 100% rename from packages/api/.eslintrc.json rename to packages/new_api/.eslintrc.json diff --git a/packages/api/.gcloudignore b/packages/new_api/.gcloudignore similarity index 100% rename from packages/api/.gcloudignore rename to packages/new_api/.gcloudignore diff --git a/packages/api/.gitignore b/packages/new_api/.gitignore similarity index 100% rename from packages/api/.gitignore rename to packages/new_api/.gitignore diff --git a/packages/api/app.yaml b/packages/new_api/app.yaml similarity index 100% rename from packages/api/app.yaml rename to packages/new_api/app.yaml diff --git a/packages/new_api/common/index.ts b/packages/new_api/common/index.ts new file mode 100644 index 0000000..76f132f --- /dev/null +++ b/packages/new_api/common/index.ts @@ -0,0 +1,3 @@ +export const connectCore = () => { + console.log('CONNECTED COREEEE'); +}; diff --git a/packages/new_api/common/models/content.model.ts b/packages/new_api/common/models/content.model.ts new file mode 100644 index 0000000..ba59f4c --- /dev/null +++ b/packages/new_api/common/models/content.model.ts @@ -0,0 +1,35 @@ +export interface IContent { + id: string; + creatorUserId: string; + contentUrl: string; // remote resource of file/media + createdDate: Date; + + // visitCount +} + +// ? persist length of clip for easier viewing for others... +// ?they have to load it anyway and will get metadata anyway? +export class ContentBlock implements IContent { + constructor( + public id: string, + public creatorUserId: string, + public contentUrl: string, + + public contentType: ContentType, + public blobType: string, + + public createdDate: Date, + ) {} +} + +export enum ContentType { + audio = 'audio', + + link = 'link', + + image = 'image', +} + +export function isUrlImage(url: string) { + return url.match(/\.(jpeg|jpg|gif|png)$/) != null; +} diff --git a/packages/new_api/common/models/conversation.model.ts b/packages/new_api/common/models/conversation.model.ts new file mode 100644 index 0000000..3ed04d4 --- /dev/null +++ b/packages/new_api/common/models/conversation.model.ts @@ -0,0 +1,48 @@ +import { User } from './user.model'; +export default class Conversation { + constructor( + public id: string, + public createdByUserId: string, + + public memberIdsList: string[], + + public members: MemberMap, + + public userCache: User[], + + public name: string | null = null, + + public lastUpdatedDate: Date, + + public createdDate: Date, + + public membersInRoom: string[] = [], + ) {} +} + +export type MemberMap = { + [memberId: string]: ConversationMember; +}; + +export class ConversationMember { + constructor( + public userId: string, // NOTE: serves as the user ID + + public role: MemberRole, + + public memberState: MemberState, + public isActive: boolean = true, + public lastActiveDate: Date, + public joinedDate = Date, + ) {} +} + +export enum MemberRole { + admin = 'admin', + regular = 'regular', +} +export enum MemberState { + priority = 'priority', + inbox = 'inbox', + // deleted = "deleted" +} diff --git a/packages/new_api/common/models/user.model.ts b/packages/new_api/common/models/user.model.ts new file mode 100644 index 0000000..6fa5b16 --- /dev/null +++ b/packages/new_api/common/models/user.model.ts @@ -0,0 +1,16 @@ +export class User { + lastUpdatedDate?: Date; + + priorityConversations?: string[]; // id of all priority convos + + constructor( + public id: string, + public uid: string, + public providerId: string, + public email: string, + public displayName?: string, + public photoUrl?: string, + public phoneNumber?: string, + public createdDate: Date = new Date(), + ) {} +} diff --git a/packages/api/config/index.ts b/packages/new_api/config/index.ts similarity index 100% rename from packages/api/config/index.ts rename to packages/new_api/config/index.ts diff --git a/packages/api/index.ts b/packages/new_api/index.ts similarity index 100% rename from packages/api/index.ts rename to packages/new_api/index.ts diff --git a/packages/api/nodemon.json b/packages/new_api/nodemon.json similarity index 100% rename from packages/api/nodemon.json rename to packages/new_api/nodemon.json diff --git a/packages/api/package.json b/packages/new_api/package.json similarity index 100% rename from packages/api/package.json rename to packages/new_api/package.json diff --git a/packages/new_api/routes.ts b/packages/new_api/routes.ts new file mode 100644 index 0000000..c8b3500 --- /dev/null +++ b/packages/new_api/routes.ts @@ -0,0 +1,7 @@ +import express from 'express'; + +const router = express.Router(); + +router.use(express.json()); + +router.post('/login', loginOrCreate); diff --git a/packages/new_api/services/UserService.ts b/packages/new_api/services/UserService.ts new file mode 100644 index 0000000..c480738 --- /dev/null +++ b/packages/new_api/services/UserService.ts @@ -0,0 +1,5 @@ +export default class UserService { + static async loginOrCreate() { + // get the user + } +} diff --git a/packages/api/src/socket.ts b/packages/new_api/src/socket.ts similarity index 100% rename from packages/api/src/socket.ts rename to packages/new_api/src/socket.ts diff --git a/packages/api/tsconfig.json b/packages/new_api/tsconfig.json similarity index 100% rename from packages/api/tsconfig.json rename to packages/new_api/tsconfig.json