polfan-server-js-client 0.1.99932 → 0.1.99934
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.idea/workspace.xml +18 -4
- package/build/index.js +117 -1
- package/build/index.js.map +1 -1
- package/build/types/index.d.ts +2 -1
- package/build/types/state-tracker/ChatStateTracker.d.ts +5 -0
- package/build/types/state-tracker/UsersManager.d.ts +15 -0
- package/build/types/state-tracker/functions.d.ts +2 -1
- package/package.json +1 -1
- package/src/index.ts +3 -1
- package/src/state-tracker/ChatStateTracker.ts +9 -0
- package/src/state-tracker/UsersManager.ts +41 -0
- package/src/state-tracker/functions.ts +5 -1
package/build/types/index.d.ts
CHANGED
|
@@ -5,5 +5,6 @@ import { AuthClient, MyAccountInterface, TokenInterface } from "./AuthClient";
|
|
|
5
5
|
import { FilesClient, File } from "./FilesClient";
|
|
6
6
|
import { Permissions, PermissionDefinition, Layer } from "./Permissions";
|
|
7
7
|
import * as ChatTypes from './types/src';
|
|
8
|
-
|
|
8
|
+
import { extractUserFromMember } from "./state-tracker/functions";
|
|
9
|
+
export { IndexedCollection, ObservableIndexedCollection, IndexedObjectCollection, ObservableIndexedObjectCollection, Permissions, PermissionDefinition, Layer, WebSocketChatClient, WebApiChatClient, AuthClient, MyAccountInterface, TokenInterface, FilesClient, File, extractUserFromMember, };
|
|
9
10
|
export type { ChatTypes };
|
|
@@ -4,6 +4,7 @@ import { RoomsManager } from "./RoomsManager";
|
|
|
4
4
|
import { SpacesManager } from "./SpacesManager";
|
|
5
5
|
import { PermissionsManager } from "./PermissionsManager";
|
|
6
6
|
import { EmoticonsManager } from "./EmoticonsManager";
|
|
7
|
+
import { UsersManager } from "./UsersManager";
|
|
7
8
|
export declare class ChatStateTracker {
|
|
8
9
|
readonly client: WebSocketChatClient;
|
|
9
10
|
/**
|
|
@@ -22,6 +23,10 @@ export declare class ChatStateTracker {
|
|
|
22
23
|
* State of the emoticons (global and space-related).
|
|
23
24
|
*/
|
|
24
25
|
readonly emoticons: EmoticonsManager;
|
|
26
|
+
/**
|
|
27
|
+
* Users related state.
|
|
28
|
+
*/
|
|
29
|
+
readonly users: UsersManager;
|
|
25
30
|
private _me;
|
|
26
31
|
private readonly deferredSession;
|
|
27
32
|
constructor(client: WebSocketChatClient);
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ChatStateTracker } from "./ChatStateTracker";
|
|
2
|
+
import { ObservableIndexedObjectCollection } from "../IndexedObjectCollection";
|
|
3
|
+
import { User } from "../types/src";
|
|
4
|
+
export declare class UsersManager {
|
|
5
|
+
private tracker;
|
|
6
|
+
private readonly users;
|
|
7
|
+
constructor(tracker: ChatStateTracker);
|
|
8
|
+
/**
|
|
9
|
+
* Get all available (cached) user objects at once.
|
|
10
|
+
*/
|
|
11
|
+
getAvailable(): Promise<ObservableIndexedObjectCollection<User>>;
|
|
12
|
+
private handleMembers;
|
|
13
|
+
private handleUsers;
|
|
14
|
+
private handleSession;
|
|
15
|
+
}
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
import { Role } from "../types/src";
|
|
1
|
+
import { Role, RoomMember, SpaceMember, User } from "../types/src";
|
|
2
2
|
export declare function reorderRolesOnPriorityUpdate(allRoles: Role[], oldRole: Role, updatedRole: Role): Role[];
|
|
3
|
+
export declare function extractUserFromMember(member: RoomMember | SpaceMember): User | null;
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -10,6 +10,7 @@ import { AuthClient, MyAccountInterface, TokenInterface } from "./AuthClient";
|
|
|
10
10
|
import {FilesClient, File} from "./FilesClient";
|
|
11
11
|
import { Permissions, PermissionDefinition, Layer } from "./Permissions";
|
|
12
12
|
import * as ChatTypes from './types/src';
|
|
13
|
+
import {extractUserFromMember} from "./state-tracker/functions";
|
|
13
14
|
|
|
14
15
|
export {
|
|
15
16
|
IndexedCollection, ObservableIndexedCollection,
|
|
@@ -17,7 +18,8 @@ export {
|
|
|
17
18
|
Permissions, PermissionDefinition, Layer,
|
|
18
19
|
WebSocketChatClient, WebApiChatClient,
|
|
19
20
|
AuthClient, MyAccountInterface, TokenInterface,
|
|
20
|
-
FilesClient, File
|
|
21
|
+
FilesClient, File,
|
|
22
|
+
extractUserFromMember,
|
|
21
23
|
};
|
|
22
24
|
|
|
23
25
|
export type {ChatTypes};
|
|
@@ -5,25 +5,34 @@ import {SpacesManager} from "./SpacesManager";
|
|
|
5
5
|
import {PermissionsManager} from "./PermissionsManager";
|
|
6
6
|
import {DeferredTask} from "./AsyncUtils";
|
|
7
7
|
import {EmoticonsManager} from "./EmoticonsManager";
|
|
8
|
+
import {UsersManager} from "./UsersManager";
|
|
8
9
|
|
|
9
10
|
export class ChatStateTracker {
|
|
10
11
|
/**
|
|
11
12
|
* State of your permissions.
|
|
12
13
|
*/
|
|
13
14
|
public readonly permissions = new PermissionsManager(this);
|
|
15
|
+
|
|
14
16
|
/**
|
|
15
17
|
* State of the rooms you are in.
|
|
16
18
|
*/
|
|
17
19
|
public readonly rooms: RoomsManager = new RoomsManager(this);
|
|
20
|
+
|
|
18
21
|
/**
|
|
19
22
|
* State of the spaces you are in.
|
|
20
23
|
*/
|
|
21
24
|
public readonly spaces = new SpacesManager(this);
|
|
25
|
+
|
|
22
26
|
/**
|
|
23
27
|
* State of the emoticons (global and space-related).
|
|
24
28
|
*/
|
|
25
29
|
public readonly emoticons = new EmoticonsManager(this);
|
|
26
30
|
|
|
31
|
+
/**
|
|
32
|
+
* Users related state.
|
|
33
|
+
*/
|
|
34
|
+
public readonly users = new UsersManager(this);
|
|
35
|
+
|
|
27
36
|
private _me: User = null;
|
|
28
37
|
private readonly deferredSession = new DeferredTask();
|
|
29
38
|
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import {ChatStateTracker} from "./ChatStateTracker";
|
|
2
|
+
import {ObservableIndexedObjectCollection} from "../IndexedObjectCollection";
|
|
3
|
+
import {RoomMember, Session, SpaceMember, User} from "../types/src";
|
|
4
|
+
import {extractUserFromMember} from "./functions";
|
|
5
|
+
|
|
6
|
+
export class UsersManager {
|
|
7
|
+
private readonly users: ObservableIndexedObjectCollection<User> = new ObservableIndexedObjectCollection('id');
|
|
8
|
+
|
|
9
|
+
public constructor(private tracker: ChatStateTracker) {
|
|
10
|
+
tracker.client.on('UserUpdated', event => this.handleUsers([event.user]));
|
|
11
|
+
tracker.client.on('RoomMemberJoined', event => this.handleMembers([event.member]));
|
|
12
|
+
tracker.client.on('RoomMemberUpdated', event => this.handleMembers([event.member]));
|
|
13
|
+
tracker.client.on('SpaceMemberJoined', event => this.handleMembers([event.member]));
|
|
14
|
+
tracker.client.on('SpaceMemberUpdated', event => this.handleMembers([event.member]));
|
|
15
|
+
tracker.client.on('SpaceMembers', event => this.handleMembers(event.members));
|
|
16
|
+
tracker.client.on('RoomMembers', event => this.handleMembers(event.members));
|
|
17
|
+
tracker.client.on('Messages', event => this.handleUsers(event.messages.map(message => message.user)));
|
|
18
|
+
tracker.client.on('NewMessage', event => this.handleUsers([event.message.user]));
|
|
19
|
+
tracker.client.on('Session', event => this.handleSession(event));
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Get all available (cached) user objects at once.
|
|
24
|
+
*/
|
|
25
|
+
public async getAvailable(): Promise<ObservableIndexedObjectCollection<User>> {
|
|
26
|
+
return this.users;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
private handleMembers(members: (RoomMember | SpaceMember)[]): void {
|
|
30
|
+
this.users.set(...members.map(extractUserFromMember));
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
private handleUsers(users: User[]): void {
|
|
34
|
+
this.users.set(...users);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
private handleSession(session: Session): void {
|
|
38
|
+
this.users.deleteAll();
|
|
39
|
+
this.users.set(session.user);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {Role} from "../types/src";
|
|
1
|
+
import {Role, RoomMember, SpaceMember, User} from "../types/src";
|
|
2
2
|
|
|
3
3
|
export function reorderRolesOnPriorityUpdate(allRoles: Role[], oldRole: Role, updatedRole: Role): Role[] {
|
|
4
4
|
// If the priority has changed, adjust the rest of roles
|
|
@@ -22,4 +22,8 @@ export function reorderRolesOnPriorityUpdate(allRoles: Role[], oldRole: Role, up
|
|
|
22
22
|
});
|
|
23
23
|
|
|
24
24
|
return changedRoles;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export function extractUserFromMember(member: RoomMember | SpaceMember): User | null {
|
|
28
|
+
return member.user ?? (member as RoomMember).spaceMember?.user;
|
|
25
29
|
}
|