Skip to content

Commit 50e8286

Browse files
committed
lint: lib/realtime
- add RealtimeModule type Signed-off-by: Raccoon <[email protected]>
1 parent 185c74f commit 50e8286

6 files changed

+54
-11
lines changed

lib/realtime/realtime-types.ts

+39
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
import SocketIO from "socket.io";
2+
import {Note} from "../models";
3+
import {ProcessQueue} from "./processQueue";
4+
import {RealtimeClientUserData, RealtimeNoteData, RealtimeUserData} from "./realtime";
5+
6+
export interface RealtimeModule {
7+
disconnectProcessQueue: ProcessQueue
8+
9+
queueForDisconnect(socket: SocketIO.Socket): void
10+
11+
disconnectSocketOnNote(note: RealtimeNoteData): void
12+
13+
getNotePool(): Record<string, RealtimeNoteData>
14+
15+
getUserPool(): Record<string, RealtimeUserData>
16+
17+
getUserFromUserPool(userId: string): RealtimeUserData | null
18+
19+
getNoteFromNotePool(noteId: string): RealtimeNoteData | null
20+
21+
checkViewPermission(req, note: RealtimeNoteData): boolean
22+
23+
emitRefresh(socket: SocketIO.Socket): void
24+
25+
emitUserStatus(socket: SocketIO.Socket): void
26+
27+
updateUserData(socket: SocketIO.Socket, user: RealtimeUserData): void
28+
29+
emitOnlineUsers(socket: SocketIO.Socket): void
30+
31+
buildUserOutData(user: RealtimeUserData): RealtimeClientUserData
32+
33+
emitCheck(note: RealtimeNoteData): void
34+
35+
updateNote(note: RealtimeNoteData, callback: (err: Error | null, note: Note) => void): void
36+
37+
io: SocketIO.Server
38+
}
39+

lib/realtime/realtime.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -497,7 +497,7 @@ export function emitRefresh(socket: SocketIO.Socket): void {
497497
socket.emit('refresh', out)
498498
}
499499

500-
export function checkViewPermission(req, note: RealtimeNoteData) {
500+
export function checkViewPermission(req, note: RealtimeNoteData): boolean {
501501
if (note.permission === 'private') {
502502
if (req.user && req.user.logged_in && req.user.id === note.owner) {
503503
return true
@@ -636,7 +636,7 @@ export function queueForDisconnect(socket: SocketIO.Socket): void {
636636
})
637637
}
638638

639-
interface RealtimeClientUserData {
639+
export interface RealtimeClientUserData {
640640
id?: string
641641
login?: boolean
642642
userid?: string

lib/realtime/realtimeCleanDanglingUserJob.ts

+4-3
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,16 @@ import async from "async";
55
import config from "../config";
66
import {logger} from "../logger";
77
import {JobWorker} from "./jobWorker";
8+
import {RealtimeModule} from "./realtime-types";
89

910
/**
1011
* clean when user not in any rooms or user not in connected list
1112
*/
1213
export class CleanDanglingUserJob implements JobWorker {
13-
private realtime: any;
14+
private realtime: RealtimeModule;
1415
private timer: NodeJS.Timeout;
1516

16-
constructor(realtime: any) {
17+
constructor(realtime: RealtimeModule) {
1718
this.realtime = realtime
1819
}
1920

@@ -33,7 +34,7 @@ export class CleanDanglingUserJob implements JobWorker {
3334
async.each(Object.keys(users), (key, callback) => {
3435
const socket = this.realtime.io.sockets.connected[key]
3536
if ((!socket && users[key]) ||
36-
(socket && (!socket.rooms || socket.rooms.length <= 0))) {
37+
(socket && (!socket.rooms || Object.keys(socket.rooms).length <= 0))) {
3738
if (config.debug) {
3839
logger.info('cleaner found redundant user: ' + key)
3940
}

lib/realtime/realtimeClientConnection.ts

+3-2
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import config from "../config";
77
import {Note} from "../models";
88
import {logger} from "../logger";
99
import {RealtimeNoteData, RealtimeUserData} from "./realtime";
10+
import {RealtimeModule} from "./realtime-types";
1011

1112
export type CursorData = {line: number, ch: number}
1213

@@ -17,7 +18,7 @@ export interface UserStatus {
1718

1819
export class RealtimeClientConnection {
1920
private socket: Socket;
20-
private realtime: any;
21+
private realtime: RealtimeModule;
2122

2223
constructor(socket: Socket) {
2324
this.socket = socket
@@ -56,7 +57,7 @@ export class RealtimeClientConnection {
5657
isNoteAndUserExists(): boolean {
5758
const note = this.realtime.getNoteFromNotePool(this.socket.noteId)
5859
const user = this.realtime.getUserFromUserPool(this.socket.id)
59-
return note && user
60+
return !!(note && user)
6061
}
6162

6263
isNoteOwner(): boolean {

lib/realtime/realtimeSaveRevisionJob.ts

+3-2
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,17 @@
33
import {logger} from "../logger";
44
import {saveAllNotesRevision} from "../services/note";
55
import {JobWorker} from "./jobWorker";
6+
import {RealtimeModule} from "./realtime-types";
67

78
/**
89
* clean when user not in any rooms or user not in connected list
910
*/
1011
export class SaveRevisionJob implements JobWorker {
11-
private realtime: any;
12+
private realtime: RealtimeModule;
1213
private saverSleep: boolean;
1314
private timer: NodeJS.Timeout;
1415

15-
constructor(realtime: any) {
16+
constructor(realtime: RealtimeModule) {
1617
this.realtime = realtime
1718
this.saverSleep = false
1819
}

lib/realtime/realtimeUpdateDirtyNoteJob.ts

+3-2
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,13 @@ import {logger} from "../logger";
55
import {Note} from "../models";
66
import {JobWorker} from "./jobWorker";
77
import {RealtimeNoteData} from "./realtime";
8+
import {RealtimeModule} from "./realtime-types";
89

910
export class UpdateDirtyNoteJob implements JobWorker {
10-
private realtime: any;
11+
private realtime: RealtimeModule;
1112
private timer: NodeJS.Timeout;
1213

13-
constructor(realtime: any) {
14+
constructor(realtime: RealtimeModule) {
1415
this.realtime = realtime
1516
}
1617

0 commit comments

Comments
 (0)