@ethora/chat-component-rn 26.7.10 → 26.8.2
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/lib/commonjs/components/Header/HeaderRoomList.js +3 -1
- package/lib/commonjs/components/Header/HeaderRoomList.js.map +1 -1
- package/lib/commonjs/components/MainComponents/ChatWrapper.js +25 -0
- package/lib/commonjs/components/MainComponents/ChatWrapper.js.map +1 -1
- package/lib/commonjs/components/MainComponents/ReduxWrapper.js +24 -3
- package/lib/commonjs/components/MainComponents/ReduxWrapper.js.map +1 -1
- package/lib/commonjs/components/MessageBubble/MessageTranslate.js +16 -7
- package/lib/commonjs/components/MessageBubble/MessageTranslate.js.map +1 -1
- package/lib/commonjs/components/Modals/AttachSheet/AttachSheet.js +7 -3
- package/lib/commonjs/components/Modals/AttachSheet/AttachSheet.js.map +1 -1
- package/lib/commonjs/components/Modals/ChatProfileModal/ChatProfileModal.js +12 -10
- package/lib/commonjs/components/Modals/ChatProfileModal/ChatProfileModal.js.map +1 -1
- package/lib/commonjs/components/Modals/ChatProfileModal/DeleteChatModal.js +9 -7
- package/lib/commonjs/components/Modals/ChatProfileModal/DeleteChatModal.js.map +1 -1
- package/lib/commonjs/components/Modals/NewChatModal/NewChatModal.js +3 -3
- package/lib/commonjs/components/Modals/NewChatModal/NewChatModal.js.map +1 -1
- package/lib/commonjs/components/Modals/ProfileHeader/ProfileHeader.js +8 -1
- package/lib/commonjs/components/Modals/ProfileHeader/ProfileHeader.js.map +1 -1
- package/lib/commonjs/components/RoomComponents/ChatRoomItem.js +32 -2
- package/lib/commonjs/components/RoomComponents/ChatRoomItem.js.map +1 -1
- package/lib/commonjs/components/styled/DateLabel.js +10 -3
- package/lib/commonjs/components/styled/DateLabel.js.map +1 -1
- package/lib/commonjs/components/styled/NewMessageLabel.js +3 -1
- package/lib/commonjs/components/styled/NewMessageLabel.js.map +1 -1
- package/lib/commonjs/components/styled/SendInput.js +6 -6
- package/lib/commonjs/components/styled/SendInput.js.map +1 -1
- package/lib/commonjs/context/xmppProvider.js +7 -0
- package/lib/commonjs/context/xmppProvider.js.map +1 -1
- package/lib/commonjs/helpers/getDataFromXml.js +24 -1
- package/lib/commonjs/helpers/getDataFromXml.js.map +1 -1
- package/lib/commonjs/helpers/insertMessageWithDelimiter.js +13 -0
- package/lib/commonjs/helpers/insertMessageWithDelimiter.js.map +1 -1
- package/lib/commonjs/helpers/isUnresolvedSenderId.js +6 -1
- package/lib/commonjs/helpers/isUnresolvedSenderId.js.map +1 -1
- package/lib/commonjs/helpers/resolveLangSource.js +38 -0
- package/lib/commonjs/helpers/resolveLangSource.js.map +1 -0
- package/lib/commonjs/helpers/xmppUsername.js +39 -0
- package/lib/commonjs/helpers/xmppUsername.js.map +1 -0
- package/lib/commonjs/hooks/useChatWrapperInit.js +4 -2
- package/lib/commonjs/hooks/useChatWrapperInit.js.map +1 -1
- package/lib/commonjs/i18n/strings.js +120 -0
- package/lib/commonjs/i18n/strings.js.map +1 -1
- package/lib/commonjs/i18n/useT.js +1 -1
- package/lib/commonjs/networking/stanzaHandlers.js +41 -70
- package/lib/commonjs/networking/stanzaHandlers.js.map +1 -1
- package/lib/commonjs/roomStore/persistence.js +17 -1
- package/lib/commonjs/roomStore/persistence.js.map +1 -1
- package/lib/commonjs/version.js +3 -1
- package/lib/commonjs/version.js.map +1 -1
- package/lib/module/components/Header/HeaderRoomList.js +3 -1
- package/lib/module/components/Header/HeaderRoomList.js.map +1 -1
- package/lib/module/components/MainComponents/ChatWrapper.js +26 -1
- package/lib/module/components/MainComponents/ChatWrapper.js.map +1 -1
- package/lib/module/components/MainComponents/ReduxWrapper.js +26 -5
- package/lib/module/components/MainComponents/ReduxWrapper.js.map +1 -1
- package/lib/module/components/MessageBubble/MessageTranslate.js +16 -7
- package/lib/module/components/MessageBubble/MessageTranslate.js.map +1 -1
- package/lib/module/components/Modals/AttachSheet/AttachSheet.js +7 -3
- package/lib/module/components/Modals/AttachSheet/AttachSheet.js.map +1 -1
- package/lib/module/components/Modals/ChatProfileModal/ChatProfileModal.js +12 -10
- package/lib/module/components/Modals/ChatProfileModal/ChatProfileModal.js.map +1 -1
- package/lib/module/components/Modals/ChatProfileModal/DeleteChatModal.js +9 -7
- package/lib/module/components/Modals/ChatProfileModal/DeleteChatModal.js.map +1 -1
- package/lib/module/components/Modals/NewChatModal/NewChatModal.js +3 -3
- package/lib/module/components/Modals/NewChatModal/NewChatModal.js.map +1 -1
- package/lib/module/components/Modals/ProfileHeader/ProfileHeader.js +8 -1
- package/lib/module/components/Modals/ProfileHeader/ProfileHeader.js.map +1 -1
- package/lib/module/components/RoomComponents/ChatRoomItem.js +33 -3
- package/lib/module/components/RoomComponents/ChatRoomItem.js.map +1 -1
- package/lib/module/components/styled/DateLabel.js +10 -3
- package/lib/module/components/styled/DateLabel.js.map +1 -1
- package/lib/module/components/styled/NewMessageLabel.js +3 -1
- package/lib/module/components/styled/NewMessageLabel.js.map +1 -1
- package/lib/module/components/styled/SendInput.js +6 -6
- package/lib/module/components/styled/SendInput.js.map +1 -1
- package/lib/module/context/xmppProvider.js +7 -0
- package/lib/module/context/xmppProvider.js.map +1 -1
- package/lib/module/helpers/getDataFromXml.js +23 -1
- package/lib/module/helpers/getDataFromXml.js.map +1 -1
- package/lib/module/helpers/insertMessageWithDelimiter.js +13 -0
- package/lib/module/helpers/insertMessageWithDelimiter.js.map +1 -1
- package/lib/module/helpers/isUnresolvedSenderId.js +6 -1
- package/lib/module/helpers/isUnresolvedSenderId.js.map +1 -1
- package/lib/module/helpers/resolveLangSource.js +32 -0
- package/lib/module/helpers/resolveLangSource.js.map +1 -0
- package/lib/module/helpers/xmppUsername.js +35 -0
- package/lib/module/helpers/xmppUsername.js.map +1 -0
- package/lib/module/hooks/useChatWrapperInit.js +4 -2
- package/lib/module/hooks/useChatWrapperInit.js.map +1 -1
- package/lib/module/i18n/strings.js +120 -0
- package/lib/module/i18n/strings.js.map +1 -1
- package/lib/module/i18n/useT.js +1 -1
- package/lib/module/networking/stanzaHandlers.js +42 -71
- package/lib/module/networking/stanzaHandlers.js.map +1 -1
- package/lib/module/roomStore/persistence.js +17 -1
- package/lib/module/roomStore/persistence.js.map +1 -1
- package/lib/module/version.js +3 -1
- package/lib/module/version.js.map +1 -1
- package/lib/typescript/components/Header/HeaderRoomList.d.ts.map +1 -1
- package/lib/typescript/components/MainComponents/ChatWrapper.d.ts.map +1 -1
- package/lib/typescript/components/MainComponents/ReduxWrapper.d.ts.map +1 -1
- package/lib/typescript/components/MessageBubble/MessageTranslate.d.ts.map +1 -1
- package/lib/typescript/components/Modals/AttachSheet/AttachSheet.d.ts.map +1 -1
- package/lib/typescript/components/Modals/ChatProfileModal/DeleteChatModal.d.ts.map +1 -1
- package/lib/typescript/components/Modals/NewChatModal/NewChatModal.d.ts.map +1 -1
- package/lib/typescript/components/Modals/ProfileHeader/ProfileHeader.d.ts.map +1 -1
- package/lib/typescript/components/RoomComponents/ChatRoomItem.d.ts.map +1 -1
- package/lib/typescript/components/styled/DateLabel.d.ts.map +1 -1
- package/lib/typescript/components/styled/NewMessageLabel.d.ts.map +1 -1
- package/lib/typescript/components/styled/SendInput.d.ts.map +1 -1
- package/lib/typescript/context/xmppProvider.d.ts.map +1 -1
- package/lib/typescript/helpers/getDataFromXml.d.ts.map +1 -1
- package/lib/typescript/helpers/insertMessageWithDelimiter.d.ts.map +1 -1
- package/lib/typescript/helpers/isUnresolvedSenderId.d.ts.map +1 -1
- package/lib/typescript/helpers/resolveLangSource.d.ts +30 -0
- package/lib/typescript/helpers/resolveLangSource.d.ts.map +1 -0
- package/lib/typescript/helpers/xmppUsername.d.ts +13 -0
- package/lib/typescript/helpers/xmppUsername.d.ts.map +1 -0
- package/lib/typescript/hooks/useChatWrapperInit.d.ts.map +1 -1
- package/lib/typescript/i18n/strings.d.ts.map +1 -1
- package/lib/typescript/i18n/useT.d.ts +1 -1
- package/lib/typescript/networking/stanzaHandlers.d.ts.map +1 -1
- package/lib/typescript/roomStore/persistence.d.ts.map +1 -1
- package/lib/typescript/version.d.ts +1 -1
- package/lib/typescript/version.d.ts.map +1 -1
- package/package.json +2 -1
- package/src/components/Header/HeaderRoomList.tsx +5 -1
- package/src/components/MainComponents/ChatWrapper.tsx +33 -0
- package/src/components/MainComponents/ReduxWrapper.tsx +18 -1
- package/src/components/MessageBubble/MessageTranslate.tsx +17 -12
- package/src/components/Modals/AttachSheet/AttachSheet.tsx +7 -3
- package/src/components/Modals/ChatProfileModal/ChatProfileModal.tsx +11 -11
- package/src/components/Modals/ChatProfileModal/DeleteChatModal.tsx +9 -7
- package/src/components/Modals/NewChatModal/NewChatModal.tsx +7 -4
- package/src/components/Modals/ProfileHeader/ProfileHeader.tsx +11 -2
- package/src/components/RoomComponents/ChatRoomItem.tsx +47 -3
- package/src/components/styled/DateLabel.tsx +10 -3
- package/src/components/styled/NewMessageLabel.tsx +3 -1
- package/src/components/styled/SendInput.tsx +6 -8
- package/src/context/xmppProvider.tsx +7 -0
- package/src/helpers/getDataFromXml.ts +25 -1
- package/src/helpers/insertMessageWithDelimiter.ts +13 -0
- package/src/helpers/isUnresolvedSenderId.ts +9 -1
- package/src/helpers/resolveLangSource.ts +40 -0
- package/src/helpers/xmppUsername.ts +38 -0
- package/src/hooks/useChatWrapperInit.ts +6 -2
- package/src/i18n/strings.ts +120 -0
- package/src/i18n/useT.ts +1 -1
- package/src/networking/stanzaHandlers.ts +42 -67
- package/src/roomStore/persistence.ts +16 -0
- package/src/version.ts +3 -1
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import { transformArrayToObject } from './transformTranslatations';
|
|
4
|
+
import { normalizeXmppUsername } from './xmppUsername';
|
|
5
|
+
const getLocalpartFromJid = jid => {
|
|
6
|
+
const value = String(jid || '').trim();
|
|
7
|
+
if (!value) {
|
|
8
|
+
return undefined;
|
|
9
|
+
}
|
|
10
|
+
return value.split('@')[0] || undefined;
|
|
11
|
+
};
|
|
4
12
|
|
|
5
13
|
// Tolerant JSON parse: a malformed `translations` attr must not reject the
|
|
6
14
|
// whole stanza (which would silently drop the message). Mirrors the web
|
|
@@ -34,7 +42,7 @@ export const getDataFromXml = async stanza => {
|
|
|
34
42
|
const fullData = stanza.getChild('result')?.getChild('forwarded')?.getChild('message') || stanza;
|
|
35
43
|
const xmppId = fullData?.attrs.id;
|
|
36
44
|
const xmppFrom = fullData?.attrs?.from;
|
|
37
|
-
const [roomJid,
|
|
45
|
+
const [roomJid, userWalletFromResource] = (xmppFrom || '').split('/');
|
|
38
46
|
let id = stanza.getChild('result')?.attrs.id || extractTimestamp(stanza?.getChild('stanza-id')?.attrs?.id, stanza);
|
|
39
47
|
if (!id) {
|
|
40
48
|
id = xmppId || Date.now().toString();
|
|
@@ -48,6 +56,20 @@ export const getDataFromXml = async stanza => {
|
|
|
48
56
|
const date = numericPart ? new Date(+numericPart.slice(0, 13)).toISOString() : new Date().toISOString();
|
|
49
57
|
const data = fullData?.getChild('data') || stanza?.getChild('data');
|
|
50
58
|
const photoURL = data?.attrs?.photo;
|
|
59
|
+
|
|
60
|
+
// Sender identity, resolved the way the web SDK does it: the occupant
|
|
61
|
+
// RESOURCE of `from` first, then the localpart of `<data senderJID>`.
|
|
62
|
+
//
|
|
63
|
+
// RN only had the first. The translate-tagged send path arrives with no
|
|
64
|
+
// occupant resource and no senderJID either, so `user.id` came out
|
|
65
|
+
// undefined and every downstream fallback landed on the bare room jid's
|
|
66
|
+
// localpart — which for a 1:1 room is `<appId>_<userA>-<appId>_<userB>`.
|
|
67
|
+
// That composite id is what got rendered as the sender's name.
|
|
68
|
+
//
|
|
69
|
+
// normalizeXmppUsername collapses a doubled `<appId>_` prefix so the key
|
|
70
|
+
// matches what usersSet is indexed by.
|
|
71
|
+
const rawUserWallet = userWalletFromResource || getLocalpartFromJid(data?.attrs?.senderJID) || undefined;
|
|
72
|
+
const userWallet = normalizeXmppUsername(rawUserWallet) || rawUserWallet;
|
|
51
73
|
const user = {
|
|
52
74
|
id: userWallet,
|
|
53
75
|
photoURL
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["transformArrayToObject","
|
|
1
|
+
{"version":3,"names":["transformArrayToObject","normalizeXmppUsername","getLocalpartFromJid","jid","value","String","trim","undefined","split","safeJsonParse","fallback","JSON","parse","normalizeTranslations","Array","isArray","filter","item","translatedText","language","languageName","extractTimestamp","str","stanza","console","log","toString","timestamp","slice","getDataFromXml","fullData","getChild","xmppId","attrs","id","xmppFrom","from","roomJid","userWalletFromResource","Date","now","body","getText","deleted","translationPayload","translations","translates","langSource","source","numericPart","exec","date","toISOString","data","photoURL","photo","rawUserWallet","senderJID","userWallet","user","dataAttrs"],"sourceRoot":"../../../src","sources":["helpers/getDataFromXml.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -35,6 +35,19 @@ function resolveMarkerMs(marker) {
|
|
|
35
35
|
}
|
|
36
36
|
function deepMerge(target, source) {
|
|
37
37
|
for (const key in source) {
|
|
38
|
+
if (source[key] === undefined) {
|
|
39
|
+
// `for...in` visits a key even when its value is `undefined` — every
|
|
40
|
+
// stanza parser (getDataFromXml/createMessageFromXml) returns an
|
|
41
|
+
// object literal with `translations` always present, explicitly
|
|
42
|
+
// `undefined` whenever the wire message didn't carry a
|
|
43
|
+
// <translations> element. Without this guard, merging THAT message
|
|
44
|
+
// over an existing row would blow away a translation the row
|
|
45
|
+
// already had (e.g. a MAM/live echo of a message arriving without
|
|
46
|
+
// its translation re-attached) — a real message flips from
|
|
47
|
+
// translated back to original text for no reason. Absence on the
|
|
48
|
+
// incoming side must mean "leave it alone", never "clear it".
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
38
51
|
if (source[key] && typeof source[key] === 'object' && !Array.isArray(source[key])) {
|
|
39
52
|
target[key] = deepMerge(target[key] || {}, source[key]);
|
|
40
53
|
} else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["isDateAfter","isDateBefore","msgSortableMs","resolveMarkerMs","marker","Number","isFinite","raw","toString","trim","asNumber","parsed","Date","parse","deepMerge","target","source","key","Array","isArray","insertMessageWithDelimiter","roomMessages","message","lastViewedTimestamp","existingIndex","findIndex","msg","id","xmppId","existing","preservedUserId","user","merged","pending","newMessageDate","date","lastMessage","length","firstMessage","index","push","lastViewedMs","newMessageMs","some","delimiterIndex","firstUnreadMs","anchorMs","splice","name","
|
|
1
|
+
{"version":3,"names":["isDateAfter","isDateBefore","msgSortableMs","resolveMarkerMs","marker","Number","isFinite","raw","toString","trim","asNumber","parsed","Date","parse","deepMerge","target","source","key","undefined","Array","isArray","insertMessageWithDelimiter","roomMessages","message","lastViewedTimestamp","existingIndex","findIndex","msg","id","xmppId","existing","preservedUserId","user","merged","pending","newMessageDate","date","lastMessage","length","firstMessage","index","push","lastViewedMs","newMessageMs","some","delimiterIndex","firstUnreadMs","anchorMs","splice","name","token","refreshToken","toISOString","body","roomJid","unshift","i"],"sourceRoot":"../../../src","sources":["helpers/insertMessageWithDelimiter.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -16,7 +16,12 @@
|
|
|
16
16
|
* matches. A raw objectId on its own is matched too, since some senders
|
|
17
17
|
* carry only that half.
|
|
18
18
|
*/
|
|
19
|
-
const
|
|
19
|
+
const ETHORA_ID_PART = '[0-9a-f]{24}(?:_[0-9a-f]{24})?';
|
|
20
|
+
// A private (1:1) room's own id is two of those joined by a hyphen —
|
|
21
|
+
// `<appId>_<userA>-<appId>_<userB>` — and that is what a message whose
|
|
22
|
+
// `from` carries no occupant resource resolves to. Matched as well, so a
|
|
23
|
+
// bubble is never captioned with a room id.
|
|
24
|
+
const ETHORA_ID = new RegExp(`^${ETHORA_ID_PART}(?:-${ETHORA_ID_PART})?$`, 'i');
|
|
20
25
|
export const isUnresolvedSenderId = name => {
|
|
21
26
|
const trimmed = String(name || '').trim();
|
|
22
27
|
if (!trimmed) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ETHORA_ID","isUnresolvedSenderId","name","trimmed","String","trim","test"],"sourceRoot":"../../../src","sources":["helpers/isUnresolvedSenderId.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMA,SAAS,GAAG,
|
|
1
|
+
{"version":3,"names":["ETHORA_ID_PART","ETHORA_ID","RegExp","isUnresolvedSenderId","name","trimmed","String","trim","test"],"sourceRoot":"../../../src","sources":["helpers/isUnresolvedSenderId.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMA,cAAc,GAAG,gCAAgC;AACvD;AACA;AACA;AACA;AACA,MAAMC,SAAS,GAAG,IAAIC,MAAM,CAC1B,IAAIF,cAAc,OAAOA,cAAc,KAAK,EAC5C,GACF,CAAC;AAED,OAAO,MAAMG,oBAAoB,GAAIC,IAAa,IAAc;EAC9D,MAAMC,OAAO,GAAGC,MAAM,CAACF,IAAI,IAAI,EAAE,CAAC,CAACG,IAAI,CAAC,CAAC;EACzC,IAAI,CAACF,OAAO,EAAE;IACZ,OAAO,IAAI;EACb;EACA,OAAOJ,SAAS,CAACO,IAAI,CAACH,OAAO,CAAC;AAChC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Legacy single-locale config (`translates.translations`) seeds langSource
|
|
5
|
+
* only when the host ACTUALLY set it.
|
|
6
|
+
*
|
|
7
|
+
* The condition used to be inverted (`!translates.translations`), so merely
|
|
8
|
+
* enabling translation fired `setLangSource(undefined)` on every XMPP init
|
|
9
|
+
* and wiped whatever the reader had picked from the globe — the language
|
|
10
|
+
* reset itself on every reconnect. Web fixed this; RN had not.
|
|
11
|
+
*/
|
|
12
|
+
export const resolveLegacyTranslatesLangSource = translatesConfig => translatesConfig?.enabled && translatesConfig?.translations ? translatesConfig.translations : undefined;
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* A host drives the reader's language from OUTSIDE the component by setting
|
|
16
|
+
* `config.translates.readerLocale` (their own language switcher, or the
|
|
17
|
+
* testbed's Setup tab). Nothing was syncing it into `langSource`, so pinning
|
|
18
|
+
* it only redirected the incoming-translation lookup: the UI captions and
|
|
19
|
+
* the `<translate source>` on outgoing messages both kept following the
|
|
20
|
+
* unset `langSource`.
|
|
21
|
+
*
|
|
22
|
+
* Unlike web this keeps the FULL locale rather than the base language. RN's
|
|
23
|
+
* LANGUAGE_OPTIONS are region-tagged (`es-US`, `fr-CA`) because the region
|
|
24
|
+
* is forwarded to the translation service, and the in-chat picker stores
|
|
25
|
+
* that full form — so the external path has to store the same thing or the
|
|
26
|
+
* two would disagree. Caption lookups strip to the base themselves.
|
|
27
|
+
*
|
|
28
|
+
* Resolves only when actually set, so a host that leaves it unset never
|
|
29
|
+
* clobbers what the reader chose for themselves.
|
|
30
|
+
*/
|
|
31
|
+
export const resolveExternalReaderLocaleLangSource = readerLocale => readerLocale || undefined;
|
|
32
|
+
//# sourceMappingURL=resolveLangSource.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["resolveLegacyTranslatesLangSource","translatesConfig","enabled","translations","undefined","resolveExternalReaderLocaleLangSource","readerLocale"],"sourceRoot":"../../../src","sources":["helpers/resolveLangSource.ts"],"mappings":";;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMA,iCAAiC,GAC5CC,gBAAwC,IAExCA,gBAAgB,EAAEC,OAAO,IAAID,gBAAgB,EAAEE,YAAY,GACvDF,gBAAgB,CAACE,YAAY,GAC7BC,SAAS;;AAEf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,qCAAqC,GAChDC,YAAqB,IAEpBA,YAAY,IAAIF,SAAuC","ignoreList":[]}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { store } from '../roomStore';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Collapse a duplicated `<appId>_` prefix down to one.
|
|
7
|
+
*
|
|
8
|
+
* Ported from the web SDK (src/helpers/xmppUsername.ts). Some senders stamp
|
|
9
|
+
* an already-qualified username and it gets qualified a second time, which
|
|
10
|
+
* yields `<appId>_<appId>_<userId>` — a key `usersSet` will never match.
|
|
11
|
+
*
|
|
12
|
+
* RN reads the appId off the logged-in user's own xmppUsername
|
|
13
|
+
* (`<appId>_<userId>`) since the chat store has no standalone `appId` field
|
|
14
|
+
* the way web's does.
|
|
15
|
+
*/
|
|
16
|
+
export const normalizeXmppUsername = value => {
|
|
17
|
+
if (!value) {
|
|
18
|
+
return '';
|
|
19
|
+
}
|
|
20
|
+
let result = String(value).trim();
|
|
21
|
+
if (!result) {
|
|
22
|
+
return '';
|
|
23
|
+
}
|
|
24
|
+
const ownXmpp = String(store.getState().chatSettingStore?.user?.xmppUsername || '');
|
|
25
|
+
const appId = ownXmpp.includes('_') ? ownXmpp.split('_')[0] : '';
|
|
26
|
+
if (!appId) {
|
|
27
|
+
return result;
|
|
28
|
+
}
|
|
29
|
+
const prefix = `${appId}_`;
|
|
30
|
+
while (result.startsWith(prefix + prefix)) {
|
|
31
|
+
result = result.slice(prefix.length);
|
|
32
|
+
}
|
|
33
|
+
return result;
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=xmppUsername.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["store","normalizeXmppUsername","value","result","String","trim","ownXmpp","getState","chatSettingStore","user","xmppUsername","appId","includes","split","prefix","startsWith","slice","length"],"sourceRoot":"../../../src","sources":["helpers/xmppUsername.ts"],"mappings":";;AAAA,SAASA,KAAK,QAAQ,cAAc;;AAEpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,qBAAqB,GAChCC,KAAgC,IACrB;EACX,IAAI,CAACA,KAAK,EAAE;IACV,OAAO,EAAE;EACX;EACA,IAAIC,MAAM,GAAGC,MAAM,CAACF,KAAK,CAAC,CAACG,IAAI,CAAC,CAAC;EACjC,IAAI,CAACF,MAAM,EAAE;IACX,OAAO,EAAE;EACX;EAEA,MAAMG,OAAO,GAAGF,MAAM,CACpBJ,KAAK,CAACO,QAAQ,CAAC,CAAC,CAACC,gBAAgB,EAAEC,IAAI,EAAEC,YAAY,IAAI,EAC3D,CAAC;EACD,MAAMC,KAAK,GAAGL,OAAO,CAACM,QAAQ,CAAC,GAAG,CAAC,GAAGN,OAAO,CAACO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;EAChE,IAAI,CAACF,KAAK,EAAE;IACV,OAAOR,MAAM;EACf;EAEA,MAAMW,MAAM,GAAG,GAAGH,KAAK,GAAG;EAC1B,OAAOR,MAAM,CAACY,UAAU,CAACD,MAAM,GAAGA,MAAM,CAAC,EAAE;IACzCX,MAAM,GAAGA,MAAM,CAACa,KAAK,CAACF,MAAM,CAACG,MAAM,CAAC;EACtC;EACA,OAAOd,MAAM;AACf,CAAC","ignoreList":[]}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
import { useEffect, useRef, useState } from 'react';
|
|
6
6
|
import { useDispatch, useSelector } from 'react-redux';
|
|
7
|
+
import { resolveLegacyTranslatesLangSource } from '../helpers/resolveLangSource';
|
|
7
8
|
import { useXmppClient } from '../context/xmppProvider';
|
|
8
9
|
import { chatAutoEnterer } from '../helpers/chatAutoEnterer';
|
|
9
10
|
import { initRoomsPresence } from '../helpers/initRoomsPresence';
|
|
@@ -90,8 +91,9 @@ const useChatWrapperInit = ({
|
|
|
90
91
|
useEffect(() => {
|
|
91
92
|
let retryTimeout;
|
|
92
93
|
const initXmmpClient = async () => {
|
|
93
|
-
|
|
94
|
-
|
|
94
|
+
const legacyLangSource = resolveLegacyTranslatesLangSource(config?.translates);
|
|
95
|
+
if (legacyLangSource) {
|
|
96
|
+
dispatch(setLangSource(legacyLangSource));
|
|
95
97
|
}
|
|
96
98
|
dispatch(setConfig(config));
|
|
97
99
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useEffect","useRef","useState","useDispatch","useSelector","useXmppClient","chatAutoEnterer","initRoomsPresence","updateMessagesTillLast","refreshAuthTokensQuietly","setLangSource","setConfig","setIsLoading","useRoomState","useChatSettingState","isChatIdPresentInArray","useGetNewArchRoom","getRoomsWithRetry","shallowEqual","useChatWrapperInit","roomJID","wasAutoSelected","config","dispatch","inited","setInited","showModal","setShowModal","isConnectionLost","setConnectionLost","isRetrying","setIsRetrying","hasSyncedHistoryRef","client","initializeClient","setClient","syncRooms","rooms","state","roomsList","user","xmppPassword","console","log","close","lastSyncedConfigRef","undefined","current","getRoomsWithRertyRequest","retryRooms","loadRooms","disableLoad","loading","loadingText","retryTimeout","initXmmpClient","
|
|
1
|
+
{"version":3,"names":["useEffect","useRef","useState","useDispatch","useSelector","resolveLegacyTranslatesLangSource","useXmppClient","chatAutoEnterer","initRoomsPresence","updateMessagesTillLast","refreshAuthTokensQuietly","setLangSource","setConfig","setIsLoading","useRoomState","useChatSettingState","isChatIdPresentInArray","useGetNewArchRoom","getRoomsWithRetry","shallowEqual","useChatWrapperInit","roomJID","wasAutoSelected","config","dispatch","inited","setInited","showModal","setShowModal","isConnectionLost","setConnectionLost","isRetrying","setIsRetrying","hasSyncedHistoryRef","client","initializeClient","setClient","syncRooms","rooms","state","roomsList","user","xmppPassword","console","log","close","lastSyncedConfigRef","undefined","current","getRoomsWithRertyRequest","retryRooms","loadRooms","disableLoad","loading","loadingText","retryTimeout","initXmmpClient","legacyLangSource","translates","xmppUsername","error","newClient","defaultWallet","walletAddress","xmppSettings","status","Object","keys","length","newArch","loadedRooms","enableRoomsRetry","enabled","isSelectedRoomPresent","getRoomsStanza","roomTimestampObject","getChatsPrivateStoreRequestStanza","err","warn","refreshTokens","setTimeout","clearTimeout"],"sourceRoot":"../../../src","sources":["hooks/useChatWrapperInit.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
|
|
16
16
|
const en = {
|
|
17
17
|
'search.placeholder': 'Search...',
|
|
18
|
+
'roomList.title': 'Chats',
|
|
18
19
|
'search.members': 'Search members',
|
|
19
20
|
'search.noResults': 'Nobody found',
|
|
20
21
|
'input.placeholder': 'Type message',
|
|
@@ -24,6 +25,8 @@ const en = {
|
|
|
24
25
|
'date.yesterday': 'Yesterday',
|
|
25
26
|
'message.deleted': 'Message deleted',
|
|
26
27
|
'message.edited': 'edited',
|
|
28
|
+
'message.newMessages': 'New messages',
|
|
29
|
+
'notification.senderFallback': 'New message',
|
|
27
30
|
'presence.online': 'online',
|
|
28
31
|
'presence.offline': 'offline',
|
|
29
32
|
'presence.onlineCount': '{count} online',
|
|
@@ -95,6 +98,17 @@ const en = {
|
|
|
95
98
|
'action.edit': 'Edit',
|
|
96
99
|
'action.deleteAndLeave': 'Delete and Leave',
|
|
97
100
|
'status.banned': 'banned',
|
|
101
|
+
'action.unban': 'Unban',
|
|
102
|
+
'action.openSettings': 'Open Settings',
|
|
103
|
+
'attach.takePhoto': 'Take photo',
|
|
104
|
+
'attach.photosAndVideos': 'Photos & Videos',
|
|
105
|
+
'attach.viewLibrary': 'View Library',
|
|
106
|
+
'attach.uploadFile': 'Upload a File',
|
|
107
|
+
'permission.requiredTitle': 'Permission required',
|
|
108
|
+
'permission.photoLibrary': 'Photo library permission is needed to select images.',
|
|
109
|
+
'permission.camera': 'Camera permission is needed to take photos and videos.',
|
|
110
|
+
'permission.gallery': 'Gallery permission is needed to select photos and videos.',
|
|
111
|
+
'permission.microphone': 'Microphone permission is needed to record voice messages.',
|
|
98
112
|
'status.connecting': 'Connecting…',
|
|
99
113
|
'status.noInternet': 'No internet connection',
|
|
100
114
|
'translation.translating': 'Translating…',
|
|
@@ -117,8 +131,13 @@ const en = {
|
|
|
117
131
|
'toast.roomCreationTitle': 'Room creation',
|
|
118
132
|
'toast.roomCreating': 'Room is being created...',
|
|
119
133
|
'toast.success': 'Success!',
|
|
134
|
+
'toast.successTitle': 'Success',
|
|
120
135
|
'toast.roomCreatedSuccess': 'Room created successfully!',
|
|
121
136
|
'toast.usersAddedSuccess': 'Users added successfully!',
|
|
137
|
+
'toast.roomImageUpdated': 'Room image updated successfully',
|
|
138
|
+
'toast.failedToUploadImage': 'Failed to upload image',
|
|
139
|
+
'toast.chatDeletedSuccess': 'Chat deleted successfully',
|
|
140
|
+
'toast.failedToDeleteChat': 'Failed to delete chat',
|
|
122
141
|
'settings.menu.title': 'Settings',
|
|
123
142
|
'modal.filePreview.title': 'File preview',
|
|
124
143
|
'toast.error': 'Error',
|
|
@@ -186,6 +205,7 @@ const en = {
|
|
|
186
205
|
'modal.chatProfile.membersLabel': 'Members: {count}',
|
|
187
206
|
'modal.chatProfile.membersUnavailable': 'Member list unavailable',
|
|
188
207
|
'modal.chatProfile.removeMember': 'Remove from this chat?',
|
|
208
|
+
'modal.chatProfile.memberListUnavailable': 'Member list unavailable',
|
|
189
209
|
'modal.deleteChat.title': 'Delete this chat ?',
|
|
190
210
|
'modal.addMembers.title': 'Add New Member',
|
|
191
211
|
'modal.addMembers.userIdPlaceholder': 'Enter User Id',
|
|
@@ -242,6 +262,7 @@ const en = {
|
|
|
242
262
|
};
|
|
243
263
|
const fr = {
|
|
244
264
|
'search.placeholder': 'Rechercher...',
|
|
265
|
+
'roomList.title': 'Discussions',
|
|
245
266
|
'search.members': 'Rechercher des membres',
|
|
246
267
|
'search.noResults': 'Personne trouvée',
|
|
247
268
|
'input.placeholder': 'Écrire un message',
|
|
@@ -251,6 +272,8 @@ const fr = {
|
|
|
251
272
|
'date.yesterday': 'Hier',
|
|
252
273
|
'message.deleted': 'Message supprimé',
|
|
253
274
|
'message.edited': 'modifié',
|
|
275
|
+
'message.newMessages': 'Nouveaux messages',
|
|
276
|
+
'notification.senderFallback': 'Nouveau message',
|
|
254
277
|
'presence.online': 'en ligne',
|
|
255
278
|
'presence.offline': 'hors ligne',
|
|
256
279
|
'presence.onlineCount': '{count} en ligne',
|
|
@@ -322,6 +345,17 @@ const fr = {
|
|
|
322
345
|
'action.edit': 'Modifier',
|
|
323
346
|
'action.deleteAndLeave': 'Supprimer et quitter',
|
|
324
347
|
'status.banned': 'banni',
|
|
348
|
+
'action.unban': 'Débannir',
|
|
349
|
+
'action.openSettings': 'Ouvrir les réglages',
|
|
350
|
+
'attach.takePhoto': 'Prendre une photo',
|
|
351
|
+
'attach.photosAndVideos': 'Photos et vidéos',
|
|
352
|
+
'attach.viewLibrary': 'Voir la bibliothèque',
|
|
353
|
+
'attach.uploadFile': 'Téléverser un fichier',
|
|
354
|
+
'permission.requiredTitle': 'Autorisation requise',
|
|
355
|
+
'permission.photoLibrary': "L'autorisation d'accès à la photothèque est nécessaire pour sélectionner des images.",
|
|
356
|
+
'permission.camera': "L'autorisation d'accès à la caméra est nécessaire pour prendre des photos et des vidéos.",
|
|
357
|
+
'permission.gallery': "L'autorisation d'accès à la galerie est nécessaire pour sélectionner des photos et des vidéos.",
|
|
358
|
+
'permission.microphone': "L'autorisation d'accès au microphone est nécessaire pour enregistrer des messages vocaux.",
|
|
325
359
|
'status.connecting': 'Connexion…',
|
|
326
360
|
'status.noInternet': 'Pas de connexion internet',
|
|
327
361
|
'translation.translating': 'Traduction…',
|
|
@@ -344,8 +378,13 @@ const fr = {
|
|
|
344
378
|
'toast.roomCreationTitle': 'Création du salon',
|
|
345
379
|
'toast.roomCreating': 'Le salon est en cours de création...',
|
|
346
380
|
'toast.success': 'Succès !',
|
|
381
|
+
'toast.successTitle': 'Succès',
|
|
347
382
|
'toast.roomCreatedSuccess': 'Salon créé avec succès !',
|
|
348
383
|
'toast.usersAddedSuccess': 'Utilisateurs ajoutés avec succès !',
|
|
384
|
+
'toast.roomImageUpdated': 'Image du salon mise à jour avec succès',
|
|
385
|
+
'toast.failedToUploadImage': "Échec du téléchargement de l'image",
|
|
386
|
+
'toast.chatDeletedSuccess': 'Discussion supprimée avec succès',
|
|
387
|
+
'toast.failedToDeleteChat': 'Échec de la suppression de la discussion',
|
|
349
388
|
'settings.menu.title': 'Paramètres',
|
|
350
389
|
'modal.filePreview.title': 'Aperçu du fichier',
|
|
351
390
|
'toast.error': 'Erreur',
|
|
@@ -413,6 +452,7 @@ const fr = {
|
|
|
413
452
|
'modal.chatProfile.membersLabel': 'Membres : {count}',
|
|
414
453
|
'modal.chatProfile.membersUnavailable': 'Liste des membres indisponible',
|
|
415
454
|
'modal.chatProfile.removeMember': 'Retirer de cette discussion ?',
|
|
455
|
+
'modal.chatProfile.memberListUnavailable': 'Liste des membres indisponible',
|
|
416
456
|
'modal.deleteChat.title': 'Supprimer cette discussion ?',
|
|
417
457
|
'modal.addMembers.title': 'Ajouter un nouveau membre',
|
|
418
458
|
'modal.addMembers.userIdPlaceholder': "Entrez l'ID utilisateur",
|
|
@@ -469,6 +509,7 @@ const fr = {
|
|
|
469
509
|
};
|
|
470
510
|
const es = {
|
|
471
511
|
'search.placeholder': 'Buscar...',
|
|
512
|
+
'roomList.title': 'Chats',
|
|
472
513
|
'search.members': 'Buscar miembros',
|
|
473
514
|
'search.noResults': 'No se encontró a nadie',
|
|
474
515
|
'input.placeholder': 'Escribe un mensaje',
|
|
@@ -478,6 +519,8 @@ const es = {
|
|
|
478
519
|
'date.yesterday': 'Ayer',
|
|
479
520
|
'message.deleted': 'Mensaje eliminado',
|
|
480
521
|
'message.edited': 'editado',
|
|
522
|
+
'message.newMessages': 'Nuevos mensajes',
|
|
523
|
+
'notification.senderFallback': 'Nuevo mensaje',
|
|
481
524
|
'presence.online': 'en línea',
|
|
482
525
|
'presence.offline': 'desconectado',
|
|
483
526
|
'presence.onlineCount': '{count} en línea',
|
|
@@ -549,6 +592,17 @@ const es = {
|
|
|
549
592
|
'action.edit': 'Editar',
|
|
550
593
|
'action.deleteAndLeave': 'Eliminar y salir',
|
|
551
594
|
'status.banned': 'bloqueado',
|
|
595
|
+
'action.unban': 'Desbanear',
|
|
596
|
+
'action.openSettings': 'Abrir configuración',
|
|
597
|
+
'attach.takePhoto': 'Tomar foto',
|
|
598
|
+
'attach.photosAndVideos': 'Fotos y videos',
|
|
599
|
+
'attach.viewLibrary': 'Ver galería',
|
|
600
|
+
'attach.uploadFile': 'Subir un archivo',
|
|
601
|
+
'permission.requiredTitle': 'Permiso requerido',
|
|
602
|
+
'permission.photoLibrary': 'Se necesita permiso de acceso a la galería de fotos para seleccionar imágenes.',
|
|
603
|
+
'permission.camera': 'Se necesita permiso de cámara para tomar fotos y videos.',
|
|
604
|
+
'permission.gallery': 'Se necesita permiso de galería para seleccionar fotos y videos.',
|
|
605
|
+
'permission.microphone': 'Se necesita permiso de micrófono para grabar mensajes de voz.',
|
|
552
606
|
'status.connecting': 'Conectando…',
|
|
553
607
|
'status.noInternet': 'Sin conexión a internet',
|
|
554
608
|
'translation.translating': 'Traduciendo…',
|
|
@@ -571,8 +625,13 @@ const es = {
|
|
|
571
625
|
'toast.roomCreationTitle': 'Creación de sala',
|
|
572
626
|
'toast.roomCreating': 'La sala se está creando...',
|
|
573
627
|
'toast.success': '¡Éxito!',
|
|
628
|
+
'toast.successTitle': 'Éxito',
|
|
574
629
|
'toast.roomCreatedSuccess': '¡Sala creada correctamente!',
|
|
575
630
|
'toast.usersAddedSuccess': '¡Usuarios añadidos correctamente!',
|
|
631
|
+
'toast.roomImageUpdated': 'Imagen de la sala actualizada correctamente',
|
|
632
|
+
'toast.failedToUploadImage': 'No se pudo subir la imagen',
|
|
633
|
+
'toast.chatDeletedSuccess': 'Chat eliminado correctamente',
|
|
634
|
+
'toast.failedToDeleteChat': 'No se pudo eliminar el chat',
|
|
576
635
|
'settings.menu.title': 'Configuración',
|
|
577
636
|
'modal.filePreview.title': 'Vista previa del archivo',
|
|
578
637
|
'toast.error': 'Error',
|
|
@@ -640,6 +699,7 @@ const es = {
|
|
|
640
699
|
'modal.chatProfile.membersLabel': 'Miembros: {count}',
|
|
641
700
|
'modal.chatProfile.membersUnavailable': 'Lista de miembros no disponible',
|
|
642
701
|
'modal.chatProfile.removeMember': '¿Quitar de este chat?',
|
|
702
|
+
'modal.chatProfile.memberListUnavailable': 'Lista de miembros no disponible',
|
|
643
703
|
'modal.deleteChat.title': '¿Eliminar este chat?',
|
|
644
704
|
'modal.addMembers.title': 'Añadir nuevo miembro',
|
|
645
705
|
'modal.addMembers.userIdPlaceholder': 'Introduce el ID de usuario',
|
|
@@ -696,6 +756,7 @@ const es = {
|
|
|
696
756
|
};
|
|
697
757
|
const pt = {
|
|
698
758
|
'search.placeholder': 'Pesquisar...',
|
|
759
|
+
'roomList.title': 'Conversas',
|
|
699
760
|
'search.members': 'Pesquisar membros',
|
|
700
761
|
'search.noResults': 'Ninguém encontrado',
|
|
701
762
|
'input.placeholder': 'Escreva uma mensagem',
|
|
@@ -705,6 +766,8 @@ const pt = {
|
|
|
705
766
|
'date.yesterday': 'Ontem',
|
|
706
767
|
'message.deleted': 'Mensagem eliminada',
|
|
707
768
|
'message.edited': 'editado',
|
|
769
|
+
'message.newMessages': 'Novas mensagens',
|
|
770
|
+
'notification.senderFallback': 'Nova mensagem',
|
|
708
771
|
'presence.online': 'online',
|
|
709
772
|
'presence.offline': 'offline',
|
|
710
773
|
'presence.onlineCount': '{count} online',
|
|
@@ -776,6 +839,17 @@ const pt = {
|
|
|
776
839
|
'action.edit': 'Editar',
|
|
777
840
|
'action.deleteAndLeave': 'Eliminar e sair',
|
|
778
841
|
'status.banned': 'banido',
|
|
842
|
+
'action.unban': 'Desbanir',
|
|
843
|
+
'action.openSettings': 'Abrir definições',
|
|
844
|
+
'attach.takePhoto': 'Tirar foto',
|
|
845
|
+
'attach.photosAndVideos': 'Fotos e vídeos',
|
|
846
|
+
'attach.viewLibrary': 'Ver biblioteca',
|
|
847
|
+
'attach.uploadFile': 'Carregar um ficheiro',
|
|
848
|
+
'permission.requiredTitle': 'Permissão necessária',
|
|
849
|
+
'permission.photoLibrary': 'É necessária permissão de acesso à biblioteca de fotos para selecionar imagens.',
|
|
850
|
+
'permission.camera': 'É necessária permissão da câmara para tirar fotos e vídeos.',
|
|
851
|
+
'permission.gallery': 'É necessária permissão da galeria para selecionar fotos e vídeos.',
|
|
852
|
+
'permission.microphone': 'É necessária permissão do microfone para gravar mensagens de voz.',
|
|
779
853
|
'status.connecting': 'A ligar…',
|
|
780
854
|
'status.noInternet': 'Sem ligação à internet',
|
|
781
855
|
'translation.translating': 'A traduzir…',
|
|
@@ -798,8 +872,13 @@ const pt = {
|
|
|
798
872
|
'toast.roomCreationTitle': 'Criação de sala',
|
|
799
873
|
'toast.roomCreating': 'A sala está a ser criada...',
|
|
800
874
|
'toast.success': 'Sucesso!',
|
|
875
|
+
'toast.successTitle': 'Sucesso',
|
|
801
876
|
'toast.roomCreatedSuccess': 'Sala criada com sucesso!',
|
|
802
877
|
'toast.usersAddedSuccess': 'Utilizadores adicionados com sucesso!',
|
|
878
|
+
'toast.roomImageUpdated': 'Imagem da sala atualizada com sucesso',
|
|
879
|
+
'toast.failedToUploadImage': 'Falha ao carregar a imagem',
|
|
880
|
+
'toast.chatDeletedSuccess': 'Chat eliminado com sucesso',
|
|
881
|
+
'toast.failedToDeleteChat': 'Falha ao eliminar o chat',
|
|
803
882
|
'settings.menu.title': 'Definições',
|
|
804
883
|
'modal.filePreview.title': 'Pré-visualização do ficheiro',
|
|
805
884
|
'toast.error': 'Erro',
|
|
@@ -867,6 +946,7 @@ const pt = {
|
|
|
867
946
|
'modal.chatProfile.membersLabel': 'Membros: {count}',
|
|
868
947
|
'modal.chatProfile.membersUnavailable': 'Lista de membros indisponível',
|
|
869
948
|
'modal.chatProfile.removeMember': 'Remover deste chat?',
|
|
949
|
+
'modal.chatProfile.memberListUnavailable': 'Lista de membros indisponível',
|
|
870
950
|
'modal.deleteChat.title': 'Eliminar este chat?',
|
|
871
951
|
'modal.addMembers.title': 'Adicionar novo membro',
|
|
872
952
|
'modal.addMembers.userIdPlaceholder': 'Introduza o ID do utilizador',
|
|
@@ -923,6 +1003,7 @@ const pt = {
|
|
|
923
1003
|
};
|
|
924
1004
|
const ht = {
|
|
925
1005
|
'search.placeholder': 'Chèche...',
|
|
1006
|
+
'roomList.title': 'Chat yo',
|
|
926
1007
|
'search.members': 'Chèche manm',
|
|
927
1008
|
'search.noResults': 'Pa jwenn pèsonn',
|
|
928
1009
|
'input.placeholder': 'Ekri yon mesaj',
|
|
@@ -932,6 +1013,8 @@ const ht = {
|
|
|
932
1013
|
'date.yesterday': 'Yè',
|
|
933
1014
|
'message.deleted': 'Mesaj efase',
|
|
934
1015
|
'message.edited': 'modifye',
|
|
1016
|
+
'message.newMessages': 'Nouvo mesaj yo',
|
|
1017
|
+
'notification.senderFallback': 'Nouvo mesaj',
|
|
935
1018
|
'presence.online': 'an liy',
|
|
936
1019
|
'presence.offline': 'pa an liy',
|
|
937
1020
|
'presence.onlineCount': '{count} an liy',
|
|
@@ -1003,6 +1086,17 @@ const ht = {
|
|
|
1003
1086
|
'action.edit': 'Modifye',
|
|
1004
1087
|
'action.deleteAndLeave': 'Efase epi kite',
|
|
1005
1088
|
'status.banned': 'bloke',
|
|
1089
|
+
'action.unban': 'Retire Ban',
|
|
1090
|
+
'action.openSettings': 'Louvri Paramèt yo',
|
|
1091
|
+
'attach.takePhoto': 'Pran yon foto',
|
|
1092
|
+
'attach.photosAndVideos': 'Foto ak videyo',
|
|
1093
|
+
'attach.viewLibrary': 'Wè bibliyotèk la',
|
|
1094
|
+
'attach.uploadFile': 'Telechaje yon fichye',
|
|
1095
|
+
'permission.requiredTitle': 'Otorizasyon nesesè',
|
|
1096
|
+
'permission.photoLibrary': 'Nou bezwen otorizasyon pou aksè nan bibliyotèk foto ou pou chwazi imaj.',
|
|
1097
|
+
'permission.camera': 'Nou bezwen otorizasyon kamera pou pran foto ak videyo.',
|
|
1098
|
+
'permission.gallery': 'Nou bezwen otorizasyon galri pou chwazi foto ak videyo.',
|
|
1099
|
+
'permission.microphone': 'Nou bezwen otorizasyon mikwo pou anrejistre mesaj vokal.',
|
|
1006
1100
|
'status.connecting': 'Koneksyon…',
|
|
1007
1101
|
'status.noInternet': 'Pa gen koneksyon entènèt',
|
|
1008
1102
|
'translation.translating': 'Ap tradui…',
|
|
@@ -1025,8 +1119,13 @@ const ht = {
|
|
|
1025
1119
|
'toast.roomCreationTitle': 'Kreyasyon sal',
|
|
1026
1120
|
'toast.roomCreating': 'Sal la ap kreye...',
|
|
1027
1121
|
'toast.success': 'Siksè!',
|
|
1122
|
+
'toast.successTitle': 'Siksè',
|
|
1028
1123
|
'toast.roomCreatedSuccess': 'Sal la kreye avèk siksè!',
|
|
1029
1124
|
'toast.usersAddedSuccess': 'Itilizatè yo ajoute avèk siksè!',
|
|
1125
|
+
'toast.roomImageUpdated': 'Imaj sal la mete ajou avèk siksè',
|
|
1126
|
+
'toast.failedToUploadImage': 'Echèk pou telechaje imaj la',
|
|
1127
|
+
'toast.chatDeletedSuccess': 'Chat la efase avèk siksè',
|
|
1128
|
+
'toast.failedToDeleteChat': 'Echèk pou efase chat la',
|
|
1030
1129
|
'settings.menu.title': 'Paramèt',
|
|
1031
1130
|
'modal.filePreview.title': 'Apèsi fichye',
|
|
1032
1131
|
'toast.error': 'Erè',
|
|
@@ -1094,6 +1193,7 @@ const ht = {
|
|
|
1094
1193
|
'modal.chatProfile.membersLabel': 'Manm: {count}',
|
|
1095
1194
|
'modal.chatProfile.membersUnavailable': 'Lis manm yo pa disponib',
|
|
1096
1195
|
'modal.chatProfile.removeMember': 'Retire nan chat sa a?',
|
|
1196
|
+
'modal.chatProfile.memberListUnavailable': 'Lis manm yo pa disponib',
|
|
1097
1197
|
'modal.deleteChat.title': 'Efase chat sa a?',
|
|
1098
1198
|
'modal.addMembers.title': 'Ajoute yon nouvo manm',
|
|
1099
1199
|
'modal.addMembers.userIdPlaceholder': 'Antre ID itilizatè a',
|
|
@@ -1150,6 +1250,7 @@ const ht = {
|
|
|
1150
1250
|
};
|
|
1151
1251
|
const zh = {
|
|
1152
1252
|
'search.placeholder': '搜索...',
|
|
1253
|
+
'roomList.title': '聊天',
|
|
1153
1254
|
'search.members': '搜索成员',
|
|
1154
1255
|
'search.noResults': '未找到成员',
|
|
1155
1256
|
'input.placeholder': '输入消息',
|
|
@@ -1159,6 +1260,8 @@ const zh = {
|
|
|
1159
1260
|
'date.yesterday': '昨天',
|
|
1160
1261
|
'message.deleted': '消息已删除',
|
|
1161
1262
|
'message.edited': '已编辑',
|
|
1263
|
+
'message.newMessages': '新消息',
|
|
1264
|
+
'notification.senderFallback': '新消息',
|
|
1162
1265
|
'presence.online': '在线',
|
|
1163
1266
|
'presence.offline': '离线',
|
|
1164
1267
|
'presence.onlineCount': '{count} 人在线',
|
|
@@ -1230,6 +1333,17 @@ const zh = {
|
|
|
1230
1333
|
'action.edit': '编辑',
|
|
1231
1334
|
'action.deleteAndLeave': '删除并退出',
|
|
1232
1335
|
'status.banned': '已封禁',
|
|
1336
|
+
'action.unban': '解除封禁',
|
|
1337
|
+
'action.openSettings': '打开设置',
|
|
1338
|
+
'attach.takePhoto': '拍照',
|
|
1339
|
+
'attach.photosAndVideos': '照片和视频',
|
|
1340
|
+
'attach.viewLibrary': '查看相册',
|
|
1341
|
+
'attach.uploadFile': '上传文件',
|
|
1342
|
+
'permission.requiredTitle': '需要权限',
|
|
1343
|
+
'permission.photoLibrary': '需要照片图库权限才能选择图片。',
|
|
1344
|
+
'permission.camera': '需要相机权限才能拍摄照片和视频。',
|
|
1345
|
+
'permission.gallery': '需要相册权限才能选择照片和视频。',
|
|
1346
|
+
'permission.microphone': '需要麦克风权限才能录制语音消息。',
|
|
1233
1347
|
'status.connecting': '连接中…',
|
|
1234
1348
|
'status.noInternet': '无网络连接',
|
|
1235
1349
|
'translation.translating': '翻译中…',
|
|
@@ -1252,8 +1366,13 @@ const zh = {
|
|
|
1252
1366
|
'toast.roomCreationTitle': '创建聊天室',
|
|
1253
1367
|
'toast.roomCreating': '正在创建聊天室...',
|
|
1254
1368
|
'toast.success': '成功!',
|
|
1369
|
+
'toast.successTitle': '成功',
|
|
1255
1370
|
'toast.roomCreatedSuccess': '聊天室创建成功!',
|
|
1256
1371
|
'toast.usersAddedSuccess': '用户添加成功!',
|
|
1372
|
+
'toast.roomImageUpdated': '聊天室图片更新成功',
|
|
1373
|
+
'toast.failedToUploadImage': '图片上传失败',
|
|
1374
|
+
'toast.chatDeletedSuccess': '聊天已成功删除',
|
|
1375
|
+
'toast.failedToDeleteChat': '删除聊天失败',
|
|
1257
1376
|
'settings.menu.title': '设置',
|
|
1258
1377
|
'modal.filePreview.title': '文件预览',
|
|
1259
1378
|
'toast.error': '错误',
|
|
@@ -1321,6 +1440,7 @@ const zh = {
|
|
|
1321
1440
|
'modal.chatProfile.membersLabel': '成员:{count}',
|
|
1322
1441
|
'modal.chatProfile.membersUnavailable': '成员列表不可用',
|
|
1323
1442
|
'modal.chatProfile.removeMember': '将其移出该聊天?',
|
|
1443
|
+
'modal.chatProfile.memberListUnavailable': '成员列表不可用',
|
|
1324
1444
|
'modal.deleteChat.title': '删除此聊天?',
|
|
1325
1445
|
'modal.addMembers.title': '添加新成员',
|
|
1326
1446
|
'modal.addMembers.userIdPlaceholder': '输入用户 ID',
|