adding common for new sort of backend and doing sort of proto way...hacky but okay for now
This commit is contained in:
+1
-1
@@ -8,4 +8,4 @@
|
|||||||
/build
|
/build
|
||||||
/dist
|
/dist
|
||||||
|
|
||||||
/packages/api/core
|
/packages/api/common
|
||||||
@@ -4,11 +4,11 @@
|
|||||||
"main": "index.ts",
|
"main": "index.ts",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"core": "cp -r ../core ./core",
|
"common": "rm -rf ./common && cp -r ../common/src ./common/",
|
||||||
"dev": "NODE_ENV=development nodemon",
|
"dev": "NODE_ENV=development && yarn common && nodemon",
|
||||||
"start:dev": "ts-node index.ts",
|
"start:dev": "ts-node index.ts",
|
||||||
"start": "node dist/index.js",
|
"start": "node dist/index.js",
|
||||||
"gcp-build": "yarn core & tsc -p .",
|
"gcp-build": "npm run common && tsc -p .",
|
||||||
"production": "NODE_ENV=production nodemon"
|
"production": "NODE_ENV=production nodemon"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
@@ -19,6 +19,7 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"axios": "^0.26.1",
|
"axios": "^0.26.1",
|
||||||
|
"firebase": "^9.8.2",
|
||||||
"cors": "^2.8.5",
|
"cors": "^2.8.5",
|
||||||
"dotenv": "^16.0.0",
|
"dotenv": "^16.0.0",
|
||||||
"express": "^4.17.3",
|
"express": "^4.17.3",
|
||||||
|
|||||||
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"name": "@nirvana/common",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"main": "index.js",
|
||||||
|
"license": "MIT"
|
||||||
|
}
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
export const connectCore = () => {
|
||||||
|
console.log('CONNECTED COREEEE');
|
||||||
|
};
|
||||||
@@ -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;
|
||||||
|
}
|
||||||
@@ -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 = null,
|
||||||
|
public joinedDate = Date,
|
||||||
|
) {}
|
||||||
|
}
|
||||||
|
|
||||||
|
export enum MemberRole {
|
||||||
|
admin = 'admin',
|
||||||
|
regular = 'regular',
|
||||||
|
}
|
||||||
|
export enum MemberState {
|
||||||
|
priority = 'priority',
|
||||||
|
inbox = 'inbox',
|
||||||
|
// deleted = "deleted"
|
||||||
|
}
|
||||||
@@ -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(),
|
||||||
|
) {}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user