@ethora/chat-component 26.3.18 → 26.3.19
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/README.md +71 -0
- package/dist/components/ContextMenu/ContextMenuComponents.d.ts +12 -10
- package/dist/components/ExampleComponents/CustomMessage.d.ts +19 -12
- package/dist/components/MainComponents/ChooseChatMessage.d.ts +4 -4
- package/dist/components/MainComponents/EditWrapper.d.ts +4 -4
- package/dist/components/MainComponents/SystemMessage.d.ts +5 -2
- package/dist/components/MessageBubble/CustomDivider.d.ts +6 -2
- package/dist/components/MessageBubble/MessageReply.d.ts +5 -2
- package/dist/components/Modals/ModalReportChat/ModalReportChat.d.ts +1 -1
- package/dist/components/Modals/SettingsModals/SharedStyledComponents.d.ts +61 -15
- package/dist/components/Modals/SettingsModals/Visibility/StyledComponents.d.ts +9 -7
- package/dist/components/Modals/styledModalComponents.d.ts +41 -23
- package/dist/components/Notification/index.d.ts +4 -2
- package/dist/components/RoomComponents/styled/StyledRoomComponents.d.ts +6 -6
- package/dist/components/UsersList/StyledComponents.d.ts +4 -4
- package/dist/components/styled/ChatWrapperBox.d.ts +1 -1
- package/dist/components/styled/DateLabel.d.ts +5 -2
- package/dist/components/styled/Loader.d.ts +1 -1
- package/dist/components/styled/MediaModal.d.ts +2 -2
- package/dist/components/styled/NewMessageLabel.d.ts +1 -1
- package/dist/components/styled/RoomListComponents/index.d.ts +21 -13
- package/dist/components/styled/StyledComponents.d.ts +79 -49
- package/dist/components/styled/StyledInputComponents/MediaComponents.d.ts +11 -11
- package/dist/components/styled/StyledInputComponents/StyledInputComponents.d.ts +26 -17
- package/dist/components/styled/StyledInputComponents/VideoComponents.d.ts +6 -6
- package/dist/components/styled/TreadLabel.d.ts +5 -2
- package/dist/components/styled/VideoMessage.d.ts +6 -6
- package/dist/main.d.ts +1 -0
- package/dist/main.js +13080 -13467
- package/dist/main.js.map +1 -1
- package/dist/roomStore/chatSettingsSlice.d.ts +0 -18
- package/dist/roomStore/roomHeapSlice.d.ts +0 -6
- package/dist/roomStore/roomsSlice.d.ts +1 -97
- package/dist/testIds.d.ts +35 -0
- package/package.json +13 -4
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { PayloadAction } from '@reduxjs/toolkit';
|
|
2
1
|
import { DeleteModal, IConfig, Iso639_1Codes, IUser, ModalFile, ModalType, User } from '../types/types';
|
|
3
2
|
interface ChatState {
|
|
4
3
|
user: User;
|
|
@@ -10,23 +9,6 @@ interface ChatState {
|
|
|
10
9
|
activeFile?: ModalFile;
|
|
11
10
|
langSource?: Iso639_1Codes;
|
|
12
11
|
}
|
|
13
|
-
export declare const chatSlice: import('@reduxjs/toolkit').Slice<ChatState, {
|
|
14
|
-
setUser: (state: import('immer').WritableDraft<ChatState>, action: PayloadAction<User>) => void;
|
|
15
|
-
updateUser(state: import('immer').WritableDraft<ChatState>, action: PayloadAction<{
|
|
16
|
-
updates: Partial<User>;
|
|
17
|
-
}>): void;
|
|
18
|
-
setConfig: (state: import('immer').WritableDraft<ChatState>, action: PayloadAction<IConfig | undefined>) => void;
|
|
19
|
-
setActiveModal: (state: import('immer').WritableDraft<ChatState>, action: PayloadAction<ModalType | undefined>) => void;
|
|
20
|
-
setActiveFile: (state: import('immer').WritableDraft<ChatState>, action: PayloadAction<ModalFile>) => void;
|
|
21
|
-
setDeleteModal: (state: import('immer').WritableDraft<ChatState>, action: PayloadAction<DeleteModal | undefined>) => void;
|
|
22
|
-
setSelectedUser: (state: import('immer').WritableDraft<ChatState>, action: PayloadAction<IUser | undefined>) => void;
|
|
23
|
-
setLangSource: (state: import('immer').WritableDraft<ChatState>, action: PayloadAction<Iso639_1Codes | undefined>) => void;
|
|
24
|
-
refreshTokens: (state: import('immer').WritableDraft<ChatState>, action: PayloadAction<{
|
|
25
|
-
token: string;
|
|
26
|
-
refreshToken: string;
|
|
27
|
-
}>) => void;
|
|
28
|
-
logout: (state: import('immer').WritableDraft<ChatState>) => void;
|
|
29
|
-
}, "chatSettingStore", "chatSettingStore", import('@reduxjs/toolkit').SliceSelectors<ChatState>>;
|
|
30
12
|
export declare const setUser: import('@reduxjs/toolkit').ActionCreatorWithOptionalPayload<User, "chatSettingStore/setUser">, setConfig: import('@reduxjs/toolkit').ActionCreatorWithNonInferrablePayload<"chatSettingStore/setConfig">, refreshTokens: import('@reduxjs/toolkit').ActionCreatorWithOptionalPayload<{
|
|
31
13
|
token: string;
|
|
32
14
|
refreshToken: string;
|
|
@@ -1,13 +1,7 @@
|
|
|
1
|
-
import { PayloadAction } from '@reduxjs/toolkit';
|
|
2
1
|
import { IMessage } from '../types/types';
|
|
3
2
|
export interface roomHeapSliceState {
|
|
4
3
|
messageHeap: IMessage[];
|
|
5
4
|
}
|
|
6
|
-
export declare const roomHeapSlice: import('@reduxjs/toolkit').Slice<roomHeapSliceState, {
|
|
7
|
-
addMessageToHeap: (state: import('immer').WritableDraft<roomHeapSliceState>, action: PayloadAction<IMessage>) => void;
|
|
8
|
-
removeMessageFromHeapById: (state: import('immer').WritableDraft<roomHeapSliceState>, action: PayloadAction<string>) => void;
|
|
9
|
-
clearHeap: (state: import('immer').WritableDraft<roomHeapSliceState>) => void;
|
|
10
|
-
}, "roomHeapStore", "roomHeapStore", import('@reduxjs/toolkit').SliceSelectors<roomHeapSliceState>>;
|
|
11
5
|
export declare const addMessageToHeap: import('@reduxjs/toolkit').ActionCreatorWithOptionalPayload<IMessage, "roomHeapStore/addMessageToHeap">, removeMessageFromHeapById: import('@reduxjs/toolkit').ActionCreatorWithOptionalPayload<string, "roomHeapStore/removeMessageFromHeapById">, clearHeap: import('@reduxjs/toolkit').ActionCreatorWithoutPayload<"roomHeapStore/clearHeap">;
|
|
12
6
|
declare const _default: import('redux').Reducer<roomHeapSliceState>;
|
|
13
7
|
export default _default;
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { PayloadAction } from '@reduxjs/toolkit';
|
|
2
1
|
import { AddRoomMessageAction, ApiRoom, EditAction, IMessage, IRoom, ReactionAction, RoomMember } from '../types/types';
|
|
3
2
|
import { default as XmppClient } from '../networking/xmppClient';
|
|
4
3
|
interface RoomMessagesState {
|
|
@@ -25,102 +24,7 @@ interface PreloadRoomUpdate {
|
|
|
25
24
|
export declare const addRoomViaApi: import('@reduxjs/toolkit').AsyncThunk<void, {
|
|
26
25
|
room: IRoom;
|
|
27
26
|
xmpp: XmppClient;
|
|
28
|
-
},
|
|
29
|
-
state?: unknown;
|
|
30
|
-
dispatch?: import('redux-thunk').ThunkDispatch<unknown, unknown, import('redux').UnknownAction>;
|
|
31
|
-
extra?: unknown;
|
|
32
|
-
rejectValue?: unknown;
|
|
33
|
-
serializedErrorType?: unknown;
|
|
34
|
-
pendingMeta?: unknown;
|
|
35
|
-
fulfilledMeta?: unknown;
|
|
36
|
-
rejectedMeta?: unknown;
|
|
37
|
-
}>;
|
|
38
|
-
export declare const roomsStore: import('@reduxjs/toolkit').Slice<RoomMessagesState, {
|
|
39
|
-
addRoom(state: import('immer').WritableDraft<RoomMessagesState>, action: PayloadAction<{
|
|
40
|
-
roomData: IRoom;
|
|
41
|
-
}>): void;
|
|
42
|
-
deleteRoom(state: import('immer').WritableDraft<RoomMessagesState>, action: PayloadAction<{
|
|
43
|
-
jid: string;
|
|
44
|
-
}>): void;
|
|
45
|
-
updateRoom(state: import('immer').WritableDraft<RoomMessagesState>, action: PayloadAction<{
|
|
46
|
-
jid: string;
|
|
47
|
-
updates: Partial<IRoom>;
|
|
48
|
-
}>): void;
|
|
49
|
-
setRoomMessages(state: import('immer').WritableDraft<RoomMessagesState>, action: PayloadAction<{
|
|
50
|
-
roomJID: string;
|
|
51
|
-
messages: IMessage[];
|
|
52
|
-
}>): void;
|
|
53
|
-
replaceRoomMessages(state: import('immer').WritableDraft<RoomMessagesState>, action: PayloadAction<{
|
|
54
|
-
roomJID: string;
|
|
55
|
-
messages: IMessage[];
|
|
56
|
-
}>): void;
|
|
57
|
-
deleteRoomMessage(state: import('immer').WritableDraft<RoomMessagesState>, action: PayloadAction<{
|
|
58
|
-
roomJID: string;
|
|
59
|
-
messageId: string;
|
|
60
|
-
}>): void;
|
|
61
|
-
setReactions: (state: import('immer').WritableDraft<RoomMessagesState>, action: PayloadAction<ReactionAction | undefined>) => void;
|
|
62
|
-
setEditAction: (state: import('immer').WritableDraft<RoomMessagesState>, action: PayloadAction<EditAction | undefined>) => void;
|
|
63
|
-
editRoomMessage(state: import('immer').WritableDraft<RoomMessagesState>, action: PayloadAction<{
|
|
64
|
-
roomJID: string;
|
|
65
|
-
messageId: string;
|
|
66
|
-
text: string;
|
|
67
|
-
}>): void;
|
|
68
|
-
addRoomMessage(state: import('immer').WritableDraft<RoomMessagesState>, action: PayloadAction<AddRoomMessageAction>): void;
|
|
69
|
-
deleteAllRooms(state: import('immer').WritableDraft<RoomMessagesState>): void;
|
|
70
|
-
insertUsers(state: import('immer').WritableDraft<RoomMessagesState>, action: PayloadAction<{
|
|
71
|
-
newUsers: RoomMember[];
|
|
72
|
-
}>): void;
|
|
73
|
-
setComposing(state: import('immer').WritableDraft<RoomMessagesState>, action: PayloadAction<{
|
|
74
|
-
chatJID: string;
|
|
75
|
-
composing: boolean;
|
|
76
|
-
composingList?: string[];
|
|
77
|
-
}>): void;
|
|
78
|
-
setIsLoading: (state: import('immer').WritableDraft<RoomMessagesState>, action: PayloadAction<{
|
|
79
|
-
chatJID?: string;
|
|
80
|
-
loading: boolean;
|
|
81
|
-
loadingText?: string;
|
|
82
|
-
}>) => void;
|
|
83
|
-
setLastViewedTimestamp: (state: import('immer').WritableDraft<RoomMessagesState>, action: PayloadAction<{
|
|
84
|
-
chatJID: string;
|
|
85
|
-
timestamp: number;
|
|
86
|
-
}>) => void;
|
|
87
|
-
setRoomRole: (state: import('immer').WritableDraft<RoomMessagesState>, action: PayloadAction<{
|
|
88
|
-
chatJID: string;
|
|
89
|
-
role: string;
|
|
90
|
-
}>) => void;
|
|
91
|
-
setRoomNoMessages: (state: import('immer').WritableDraft<RoomMessagesState>, action: PayloadAction<{
|
|
92
|
-
value: boolean;
|
|
93
|
-
chatJID?: string;
|
|
94
|
-
}>) => void;
|
|
95
|
-
setCurrentRoom: (state: import('immer').WritableDraft<RoomMessagesState>, action: PayloadAction<{
|
|
96
|
-
roomJID: string | null;
|
|
97
|
-
}>) => void;
|
|
98
|
-
setLogoutState: (state: import('immer').WritableDraft<RoomMessagesState>) => void;
|
|
99
|
-
setActiveMessage: (state: import('immer').WritableDraft<RoomMessagesState>, action: PayloadAction<{
|
|
100
|
-
id: string;
|
|
101
|
-
chatJID: string;
|
|
102
|
-
}>) => void;
|
|
103
|
-
setCloseActiveMessage: (state: import('immer').WritableDraft<RoomMessagesState>, action: PayloadAction<{
|
|
104
|
-
chatJID: string;
|
|
105
|
-
}>) => void;
|
|
106
|
-
addRoomFromApi: (state: import('immer').WritableDraft<RoomMessagesState>, action: PayloadAction<{
|
|
107
|
-
room: IRoom;
|
|
108
|
-
}>) => void;
|
|
109
|
-
applyRoomsPreloadBatch: (state: import('immer').WritableDraft<RoomMessagesState>, action: PayloadAction<{
|
|
110
|
-
rooms: PreloadRoomUpdate[];
|
|
111
|
-
}>) => void;
|
|
112
|
-
updateUsersSet: (state: import('immer').WritableDraft<RoomMessagesState>, action: PayloadAction<{
|
|
113
|
-
rooms: ApiRoom[];
|
|
114
|
-
}>) => void;
|
|
115
|
-
setOpenReportModal: (state: import('immer').WritableDraft<RoomMessagesState>, action: PayloadAction<{
|
|
116
|
-
isOpen: boolean;
|
|
117
|
-
}>) => void;
|
|
118
|
-
setPushSubscriptionStatus: (state: import('immer').WritableDraft<RoomMessagesState>, action: PayloadAction<{
|
|
119
|
-
jid: string;
|
|
120
|
-
status: "pending" | "subscribed" | "error" | "blocked";
|
|
121
|
-
}>) => void;
|
|
122
|
-
clearPushSubscriptions: (state: import('immer').WritableDraft<RoomMessagesState>) => void;
|
|
123
|
-
}, "roomMessages", "roomMessages", import('@reduxjs/toolkit').SliceSelectors<RoomMessagesState>>;
|
|
27
|
+
}, import('@reduxjs/toolkit').AsyncThunkConfig>;
|
|
124
28
|
export declare const getLastMessageTimestamp: (state: RoomMessagesState, jid: string) => string | null;
|
|
125
29
|
export declare const addRoom: import('@reduxjs/toolkit').ActionCreatorWithOptionalPayload<{
|
|
126
30
|
roomData: IRoom;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stable `data-testid` values exposed by `@ethora/chat-component`'s
|
|
3
|
+
* UI components.
|
|
4
|
+
*
|
|
5
|
+
* Cross-platform parity: string values match Android's `*TestTags`
|
|
6
|
+
* Kotlin objects (in `chat-ui/src/main/.../components/*Kt`) and iOS's
|
|
7
|
+
* `*AccessibilityID` Swift enums (in `XMPPChatUI/AccessibilityIdentifiers.swift`),
|
|
8
|
+
* so a single Maestro YAML flow exercises the same intent on either
|
|
9
|
+
* mobile platform — and Playwright tests in host apps using this
|
|
10
|
+
* component (e.g. `ethora-app-reactjs`) can resolve the same nodes
|
|
11
|
+
* via `data-testid`.
|
|
12
|
+
*
|
|
13
|
+
* Do not change a value here without updating both mobile consumers.
|
|
14
|
+
*/
|
|
15
|
+
export declare const ChatInputTestIds: {
|
|
16
|
+
readonly inputField: "chat_input";
|
|
17
|
+
readonly sendButton: "chat_send_button";
|
|
18
|
+
readonly attachButton: "chat_attach_button";
|
|
19
|
+
};
|
|
20
|
+
export declare const MessageBubbleTestIds: {
|
|
21
|
+
readonly mediaContent: "chat_message_image";
|
|
22
|
+
};
|
|
23
|
+
export declare const RoomListTestIds: {
|
|
24
|
+
readonly roomsList: "rooms_list";
|
|
25
|
+
readonly roomRow: "room_row";
|
|
26
|
+
readonly searchInput: "rooms_search_input";
|
|
27
|
+
readonly createRoomButton: "create_room_button";
|
|
28
|
+
};
|
|
29
|
+
export declare const AuthTestIds: {
|
|
30
|
+
readonly emailInput: "auth_email_input";
|
|
31
|
+
readonly passwordInput: "auth_password_input";
|
|
32
|
+
readonly submitButton: "auth_submit_button";
|
|
33
|
+
readonly emailError: "auth_email_error";
|
|
34
|
+
readonly passwordError: "auth_password_error";
|
|
35
|
+
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ethora/chat-component",
|
|
3
|
-
"version": "26.3.
|
|
3
|
+
"version": "26.3.19",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist/main.js",
|
|
6
6
|
"types": "dist/main.d.ts",
|
|
@@ -15,12 +15,16 @@
|
|
|
15
15
|
"scripts": {
|
|
16
16
|
"dev": "vite",
|
|
17
17
|
"build": "tsc && vite build",
|
|
18
|
-
"
|
|
18
|
+
"sync:lib": "node ./scripts/sync-lib.mjs",
|
|
19
|
+
"build:lib": "npm run sync:lib && tsc --p ./tsconfig-build.json && vite build",
|
|
19
20
|
"prepare": "npm run build && npm run build:lib",
|
|
20
21
|
"lint": "eslint . --quiet --report-unused-disable-directives",
|
|
21
22
|
"lint:full": "eslint . --report-unused-disable-directives --max-warnings 0",
|
|
22
23
|
"preview": "vite preview",
|
|
23
|
-
"lint:fix": "eslint . --fix && prettier . --write"
|
|
24
|
+
"lint:fix": "eslint . --fix && prettier . --write",
|
|
25
|
+
"test": "vitest run",
|
|
26
|
+
"test:watch": "vitest",
|
|
27
|
+
"test:ui": "vitest --ui"
|
|
24
28
|
},
|
|
25
29
|
"dependencies": {
|
|
26
30
|
"@emoji-mart/data": "^1.2.1",
|
|
@@ -52,6 +56,9 @@
|
|
|
52
56
|
"wavesurfer.js": "^7.9.6"
|
|
53
57
|
},
|
|
54
58
|
"devDependencies": {
|
|
59
|
+
"@testing-library/jest-dom": "^6.4.6",
|
|
60
|
+
"@testing-library/react": "^16.0.0",
|
|
61
|
+
"@testing-library/user-event": "^14.5.2",
|
|
55
62
|
"@types/node": "^24.0.3",
|
|
56
63
|
"@types/react": "^18.3.3",
|
|
57
64
|
"@types/react-dom": "^18.3.0",
|
|
@@ -64,10 +71,12 @@
|
|
|
64
71
|
"eslint-plugin-prettier": "^5.5.0",
|
|
65
72
|
"eslint-plugin-react-hooks": "^5.2.0",
|
|
66
73
|
"eslint-plugin-react-refresh": "^0.4.20",
|
|
74
|
+
"jsdom": "^24.1.0",
|
|
67
75
|
"prettier": "3.6.0",
|
|
68
76
|
"typescript": "^5.8.3",
|
|
69
77
|
"vite": "^7.0.0",
|
|
70
|
-
"vite-plugin-dts": "^4.5.4"
|
|
78
|
+
"vite-plugin-dts": "^4.5.4",
|
|
79
|
+
"vitest": "^2.0.0"
|
|
71
80
|
},
|
|
72
81
|
"overrides": {
|
|
73
82
|
"csstype": "3.1.3"
|