Commit 6711c5df by 董文博
parents d6f6f97f 64c2972a
......@@ -56,15 +56,9 @@
@chatStore.State(ChatStore.STATE_CHAT_CURRENT_CHAT_ID)
private readonly chatId!: ChatStore.STATE_CHAT_CURRENT_CHAT_ID;
@chatStore.Mutation(ChatStore.MUTATION_CLEAR_CURRENT_CHAT_MEMBERS)
private readonly clearChatMembers!: ChatStore.MUTATION_CLEAR_CURRENT_CHAT_MEMBERS;
@chatStore.State(ChatStore.STATE_CURRENT_CHAT_INPUTING)
private readonly currentInputPeople!: ChatStore.STATE_CURRENT_CHAT_INPUTING;
@chatStore.State(ChatStore.STATE_CHAT_CURRENT_CHAT_UNIPLAT_ID)
private readonly currentChatUniplatId!: ChatStore.STATE_CHAT_CURRENT_CHAT_UNIPLAT_ID;
@chatStore.State(ChatStore.STATE_CHAT_CURRENT_IS_CHAT_MEMBER)
private readonly isChatMember!: ChatStore.STATE_CHAT_CURRENT_IS_CHAT_MEMBER;
......@@ -82,12 +76,6 @@
@Provide() showReadSummary = true;
@Watch("currentChatUniplatId")
private whenCurrentChatIdChanged(newValue: string, oldValue: string) {
if (Number(oldValue) === Number(newValue)) return;
this.clearChatMembers();
}
private get getCurrentInputingPeople() {
return this.currentInputPeople
.map(() => "" /* this.userInfo[k].name */)
......@@ -174,6 +162,7 @@
),
300
);
this.$emit("send");
}
}
</script>
......@@ -184,7 +173,7 @@
width: 46px;
height: 20px;
line-height: 20px;
background: #22bd7a;
background-color: #22bd7a;
font-size: 13px;
border-radius: 2px;
color: #ffffff;
......
......@@ -8,7 +8,7 @@
width="90%"
>
<div class="d-flex flex-column">
<div class="d-flex justify-content-center">
<div class="d-flex justify-content-center align-items-start">
<img v-if="file" :src="file.url" />
<i class="el-icon-close" @click="close"></i>
</div>
......
......@@ -63,17 +63,17 @@ class ChatCacheDatabaseController {
}
resolve();
};
r.onsuccess = (e) => {
r.onsuccess = e => {
this.db = (e.target as any).result;
console.log(`index database init comepleted`);
setupDb();
};
r.onupgradeneeded = (e) => {
r.onupgradeneeded = e => {
this.db = (e.target as any).result;
console.log(`upgrade database comepleted`);
setupDb();
};
r.onerror = (e) => {
r.onerror = e => {
console.log(`index database init failed, ${e}`);
this.setupError = true;
reject();
......@@ -88,7 +88,7 @@ class ChatCacheDatabaseController {
const k = this.buildChatMessageKey(chat);
const t = this.messageDatabases.get(k);
if (!t) {
return new Promise<void>((resolve) => {
return new Promise<void>(resolve => {
if (this.uid && indexedDB) {
const r = indexedDB.open(k, this.msgVersion);
// eslint-disable-next-line @typescript-eslint/no-this-alias
......@@ -102,17 +102,17 @@ class ChatCacheDatabaseController {
}
setTimeout(() => resolve(), 200);
};
r.onsuccess = function (e) {
r.onsuccess = function(e) {
const db = (e.target as any).result;
that.messageDatabases.set(k, db);
setupDb();
};
r.onupgradeneeded = function (e) {
r.onupgradeneeded = function(e) {
const db = (e.target as any).result;
that.messageDatabases.set(k, db);
setupDb();
};
r.onerror = function (e) {
r.onerror = function(e) {
console.log(
`chat message index database init failed, ${e}`
);
......@@ -163,11 +163,11 @@ class ChatCacheDatabaseController {
}
public updateChat(p: ChatStore.ChatUpdateParameter) {
return new Promise<void>((resolve) => {
return new Promise<void>(resolve => {
if (this.db) {
const store = this.buildStore(this.chatListKey);
const t = store.get(p.chat);
t.onsuccess = (r) => {
t.onsuccess = r => {
const chat = (r.target as any).result as Chat;
if (chat) {
chat.eid = p.eid as string;
......@@ -191,11 +191,11 @@ class ChatCacheDatabaseController {
}
public updateChat4UnreadCount(chat: number, unread: number) {
return new Promise<void>((resolve) => {
return new Promise<void>(resolve => {
if (this.db) {
const store = this.buildStore(this.chatListKey);
const t = store.get(chat);
t.onsuccess = (r) => {
t.onsuccess = r => {
const chat = (r.target as any).result as Chat;
if (chat) {
chat.unread_msg_count = unread;
......@@ -214,11 +214,11 @@ class ChatCacheDatabaseController {
}
public setRead(chat: number) {
return new Promise<void>((resolve) => {
return new Promise<void>(resolve => {
if (this.db) {
const store = this.buildStore(this.chatListKey);
const t = store.get(chat);
t.onsuccess = (r) => {
t.onsuccess = r => {
const chat = (r.target as any).result as Chat;
if (chat) {
chat.unread_msg_count = 0;
......@@ -253,7 +253,7 @@ class ChatCacheDatabaseController {
allRead?: boolean;
}
) {
return new Promise<void>((resolve) => {
return new Promise<void>(resolve => {
if (this.db) {
const store = this.buildChatMessageStore(chat);
if (option.end && option.end > option.start) {
......@@ -267,7 +267,7 @@ class ChatCacheDatabaseController {
};
for (let i = option.start; i <= option.end; i++) {
const r = store.get(i);
r.onsuccess = (m) => {
r.onsuccess = m => {
const p = (m.target as any).result as Message;
if (p) {
if (option.allRead) {
......@@ -284,7 +284,7 @@ class ChatCacheDatabaseController {
}
} else {
const r = store.get(option.start);
r.onsuccess = (m) => {
r.onsuccess = m => {
const p = (m.target as any).result as Message;
if (p) {
if (option.allRead) {
......@@ -306,7 +306,7 @@ class ChatCacheDatabaseController {
}
public removeChatFromList(chat: number) {
return new Promise<void>((resolve) => {
return new Promise<void>(resolve => {
if (this.db) {
const store = this.buildStore(this.chatListKey);
const t = store.delete(chat);
......@@ -319,27 +319,27 @@ class ChatCacheDatabaseController {
}
public getChatList() {
return new Promise<Chat[]>((resolve) => {
return new Promise<Chat[]>(resolve => {
if (!this.db) {
return resolve([]);
}
const store = this.buildStore(this.chatListKey);
const r = store.getAll();
r.onsuccess = (o) => resolve((o.target as any).result);
r.onsuccess = o => resolve((o.target as any).result);
r.onerror = () => resolve([]);
});
}
public getChatByCode(code: string) {
return new Promise<Chat | null>((resolve) => {
return new Promise<Chat | null>(resolve => {
if (!this.db) {
return resolve(null);
}
const store = this.buildStore(this.chatListKey);
const r = store.getAll();
r.onsuccess = (o) => {
r.onsuccess = o => {
const items = (o.target as any).result as Chat[];
resolve(items.find((i) => i.biz_type_code === code) as Chat);
resolve(items.find(i => i.biz_type_code === code) as Chat);
};
r.onerror = () => resolve(null);
});
......@@ -364,21 +364,21 @@ class ChatCacheDatabaseController {
}
public getChatMessages(chat: number) {
return new Promise<Message[]>((resolve) => {
return new Promise<Message[]>(resolve => {
if (!this.db) {
return resolve([]);
}
this.setupChatMessageDatabase(chat).finally(() => {
const store = this.buildChatMessageStore(chat);
const r = store.getAll();
r.onsuccess = (o) => resolve((o.target as any).result);
r.onsuccess = o => resolve((o.target as any).result);
r.onerror = () => resolve([]);
});
});
}
public appendMessages(chat: number, items: Message[]) {
return new Promise<void>((resolve) => {
return new Promise<void>(resolve => {
if (!this.db || !items || !items.length) {
return resolve();
}
......@@ -413,7 +413,7 @@ class ChatCacheDatabaseController {
public mergeChatList(source1: Chat[], source2: Chat[]) {
for (const item of source2) {
const t = source1.find((i) => i.id === item.id);
const t = source1.find(i => i.id === item.id);
if (t) {
item.unread_msg_count = Math.max(
item.unread_msg_count,
......@@ -445,14 +445,14 @@ class ChatCacheDatabaseController {
msg: number,
status: MessageHandled
) {
return new Promise<void>((resolve) => {
return new Promise<void>(resolve => {
if (!this.db) {
return resolve();
}
this.setupChatMessageDatabase(chat).finally(() => {
const store = this.buildChatMessageStore(chat);
const r = store.get(msg);
r.onsuccess = (o) => {
r.onsuccess = o => {
const p = (o.target as any).result as Message;
p.handled = status;
const u = store.put(p);
......
......@@ -82,6 +82,11 @@ export interface ChatOption {
message?: ChatMessageController;
avatar?: string;
/**
* 禁用IndexDb
*/
disabledIndexDb?:boolean;
}
export interface ChatMessageController {
......
import Axios, { AxiosResponse } from "axios";
import Axios, { AxiosResponse, AxiosAdapter } from "axios";
import { UniplatSdk } from "uniplat-sdk";
import { ImEnvironment } from "../model";
......@@ -26,6 +26,7 @@ export interface SdkMonitorOption {
userAgent?: boolean;
envir: ImEnvironment;
product: Product;
call?: (r: any) => void;
}
class WebMonitor {
......@@ -33,6 +34,7 @@ class WebMonitor {
private envir = ImEnvironment.Dev;
private product = Product.Default;
private readonly url = "https://pre-hrs-monitor.hrs100.com";
private adapter: AxiosAdapter | undefined;
public updateKey(key: string) {
this.key = key;
......@@ -42,6 +44,7 @@ class WebMonitor {
private buildHeaders() {
return {
headers: { authorization: "cdd0a34e-f537-4e5b-808e-2ba06af21845" },
adapter: this.adapter,
};
}
......@@ -85,11 +88,17 @@ class WebMonitor {
);
}
public useSdk(sdk: UniplatSdk, options: SdkMonitorOption) {
public useSdk(
sdk: UniplatSdk,
options: SdkMonitorOption,
adapter?: AxiosAdapter
) {
this.envir = options.envir;
this.product = options.product;
this.adapter = adapter;
sdk.events.addUniversalErrorResponseCallback(
(r: AxiosResponse<any>) => {
options.call && options.call(r);
if (this.enable()) {
const msg: string[] = [];
msg.push(
......@@ -111,12 +120,14 @@ class WebMonitor {
if (r.config && r.config.data) {
const form = r.config.data as FormData;
if (form.getAll) {
const p = form.getAll('parameters');
const p = form.getAll("parameters");
for (const item of p) {
msg.push(`Payload: ${item}`);
}
} else {
msg.push(`Payload: ${JSON.stringify(r.config.data)}`);
msg.push(
`Payload: ${JSON.stringify(r.config.data)}`
);
}
}
......
......@@ -252,9 +252,6 @@ export namespace ChatStore {
keyword?: string
) => Promise<ChatType[]>;
export const ACTION_FORCE_RELOAD_CHAT_LIST = "重新获取我的会话列表";
export type ACTION_FORCE_RELOAD_CHAT_LIST = () => Promise<ChatType[]>;
export const ACTION_REBUILD_UNREAD_MESSAGE_COUNT = "重新计算未读消息数";
export type ACTION_REBUILD_UNREAD_MESSAGE_COUNT = () => void;
......
......@@ -58,7 +58,12 @@ class Chat {
option.message && (this.messageController = option.message);
option.avatar !== undefined && (this.defaultAvatar = option.avatar);
await this.setupIndexDb(option.orgId());
if(!option.disabledIndexDb){
await this.setupIndexDb(option.orgId()).catch(err => {
// 必须catch error不然小程序不会向后运行
console.error("setupIndexDb Error")
});
}
this.token = async () => option.sdk().global.jwtToken;
tokenManager.save(this.token);
......@@ -151,7 +156,7 @@ class Chat {
.finally(() => {
this.registerXimEvent();
if (xim.isConnected()) {
resolve();
setTimeout(resolve, 200);
} else {
reject(new Error(`xim is not connected`));
}
......
......@@ -8,7 +8,7 @@ import { Message, NotifyMessage } from "./models/chat";
import chat from "./index";
import { STATUS } from "xchat-client/dist/xchat";
wampDebug(true);
wampDebug(false);
const DefaultMsgPageSize = 20;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment