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
|
||||
/dist
|
||||
|
||||
/packages/api/core
|
||||
/packages/api/common
|
||||
@@ -4,11 +4,11 @@
|
||||
"main": "index.ts",
|
||||
"license": "MIT",
|
||||
"scripts": {
|
||||
"core": "cp -r ../core ./core",
|
||||
"dev": "NODE_ENV=development nodemon",
|
||||
"common": "rm -rf ./common && cp -r ../common/src ./common/",
|
||||
"dev": "NODE_ENV=development && yarn common && nodemon",
|
||||
"start:dev": "ts-node index.ts",
|
||||
"start": "node dist/index.js",
|
||||
"gcp-build": "yarn core & tsc -p .",
|
||||
"gcp-build": "npm run common && tsc -p .",
|
||||
"production": "NODE_ENV=production nodemon"
|
||||
},
|
||||
"devDependencies": {
|
||||
@@ -19,6 +19,7 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"axios": "^0.26.1",
|
||||
"firebase": "^9.8.2",
|
||||
"cors": "^2.8.5",
|
||||
"dotenv": "^16.0.0",
|
||||
"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