feat: 增加频道头部右侧的注入电

This commit is contained in:
tangtaoit 2023-09-01 22:13:29 +08:00
parent dd4fc57a58
commit ea17df855a
19 changed files with 288 additions and 179 deletions

View File

@ -3,7 +3,7 @@
"version": "1.0.0", "version": "1.0.0",
"main": "src/index.tsx", "main": "src/index.tsx",
"dependencies": { "dependencies": {
"@douyinfe/semi-ui": "^2.23.5", "@douyinfe/semi-ui": "^2.24.2",
"@lottiefiles/lottie-player": "^1.5.5", "@lottiefiles/lottie-player": "^1.5.5",
"@types/qrcode.react": "^1.0.2", "@types/qrcode.react": "^1.0.2",
"@types/react-color": "^3.0.6", "@types/react-color": "^3.0.6",
@ -14,7 +14,7 @@
"benz-amr-recorder": "^1.1.3", "benz-amr-recorder": "^1.1.3",
"classnames": "^2.3.1", "classnames": "^2.3.1",
"hotkeys-js": "^3.8.7", "hotkeys-js": "^3.8.7",
"wukongimjssdk": "^1.1.1", "wukongimjssdk": "^1.1.2",
"moment": "^2.29.3", "moment": "^2.29.3",
"qrcode.react": "^1.0.1", "qrcode.react": "^1.0.1",
"react": "^17.0.2", "react": "^17.0.2",

View File

@ -69,6 +69,8 @@ html {
text-rendering: optimizeLegibility; text-rendering: optimizeLegibility;
background: var( --background-color); background: var( --background-color);
color: rgba(9,30,66,.87) ; color: rgba(9,30,66,.87) ;
--semi-color-primary: #E46342;
} }
div { div {

View File

@ -19,7 +19,6 @@ import RouteContext from "./Service/Context";
import { ConnectStatus } from "wukongimjssdk"; import { ConnectStatus } from "wukongimjssdk";
import { WKBaseContext } from "./Components/WKBase"; import { WKBaseContext } from "./Components/WKBase";
import StorageService from "./Service/StorageService"; import StorageService from "./Service/StorageService";
import axios from "axios";
export enum ThemeMode { export enum ThemeMode {
light, light,

View File

@ -93,11 +93,4 @@ export default interface ConversationContext {
* @param tip * @param tip
*/ */
locateMessage(messageSeq:number):any locateMessage(messageSeq:number):any
/**
* id
*/
getMessageContainerId():string
getMessageContainer():Element|undefined
} }

View File

@ -1,4 +1,4 @@
import { Channel, ChannelTypeGroup, ChannelTypePerson, ConversationAction, WKSDK, Mention, Message, MessageContent, Reminder, ReminderType, Reply, MessageText } from "wukongimjssdk"; import { Channel, ChannelTypeGroup, ChannelTypePerson, ConversationAction, WKSDK, Mention, Message, MessageContent, Reminder, ReminderType, Reply,MessageText } from "wukongimjssdk";
import React, { Component, HTMLProps } from "react"; import React, { Component, HTMLProps } from "react";
import Provider from "../../Service/Provider"; import Provider from "../../Service/Provider";
import ConversationVM from "./vm"; import ConversationVM from "./vm";
@ -34,7 +34,6 @@ export class Conversation extends Component<ConversationProps> implements Conver
scrollTimer?: NodeJS.Timer scrollTimer?: NodeJS.Timer
updateBrowseToMessageSeqAndReminderDoneing: boolean = false updateBrowseToMessageSeqAndReminderDoneing: boolean = false
private _dragFileCallback?: (file: File) => void private _dragFileCallback?: (file: File) => void
private _self = this;
constructor(props: any) { constructor(props: any) {
super(props) super(props)
@ -161,18 +160,6 @@ export class Conversation extends Component<ConversationProps> implements Conver
messageInputContext(): MessageInputContext { messageInputContext(): MessageInputContext {
return this._messageInputContext return this._messageInputContext
} }
getMessageContainerId(): string {
return this.vm.messageContainerId
}
getMessageContainer(): Element|undefined {
const el = document.getElementById(this.vm.messageContainerId)
console.log("getMessageContainer--->",el)
if (!el) {
return undefined
}
return el
}
componentDidMount() { componentDidMount() {
@ -253,7 +240,7 @@ export class Conversation extends Component<ConversationProps> implements Conver
this.setState({}) this.setState({})
}} key={message.clientMsgNo} id={`${message.contentType === MessageContentTypeConst.time ? "time-" : ""}${message.clientMsgNo}`} className={classNames("wk-message-item", last ? "wk-message-item-last" : undefined, message.locateRemind ? 'wk-message-item-reminder' : undefined)} > }} key={message.clientMsgNo} id={`${message.contentType === MessageContentTypeConst.time ? "time-" : ""}${message.clientMsgNo}`} className={classNames("wk-message-item", last ? "wk-message-item-last" : undefined, message.locateRemind ? 'wk-message-item-reminder' : undefined)} >
{ {
MessageCell ? <MessageCell key={message.clientMsgNo} message={message} context={this}/> : null MessageCell ? <MessageCell key={message.clientMsgNo} message={message} context={this} /> : null
} }
</div> </div>
@ -263,19 +250,12 @@ export class Conversation extends Component<ConversationProps> implements Conver
if (this.scrollTimer) { if (this.scrollTimer) {
clearTimeout(this.scrollTimer) clearTimeout(this.scrollTimer)
} }
const scrollTop = e.target.scrollTop;
const scrollHeight = e.target.scrollHeight;
const clientHeight = e.clientHeight;
this.scrollTimer = setTimeout(() => { this.scrollTimer = setTimeout(() => {
this.handleScrollEnd() this.handleScrollEnd()
}, 500) }, 500)
if (this.contextMenusContext) {
this.contextMenusContext.hide() this.contextMenusContext.hide()
} const targetScrollTop = e.target.scrollTop;
const scrollOffsetTop = e.target.scrollHeight - (targetScrollTop + e.target.clientHeight);
const targetScrollTop = scrollTop;
const scrollOffsetTop = scrollHeight - (targetScrollTop + clientHeight);
// console.log("targetScrollTop---->",targetScrollTop,scrollOffsetTop,this.vm.loading,this.vm.pullupHasMore)
if (targetScrollTop <= 250 && !this.vm.loading && !this.vm.pulldownFinished) { // 下拉 if (targetScrollTop <= 250 && !this.vm.loading && !this.vm.pulldownFinished) { // 下拉
this.vm.pulldownMessages() this.vm.pulldownMessages()
} else if (scrollOffsetTop <= 500 && !this.vm.loading && this.vm.pullupHasMore) { // 上拉 } else if (scrollOffsetTop <= 500 && !this.vm.loading && this.vm.pullupHasMore) { // 上拉
@ -299,7 +279,6 @@ export class Conversation extends Component<ConversationProps> implements Conver
} }
handleScrollEnd() { handleScrollEnd() {
console.log("handleScrollEnd---->")
this.uploadReadedIfNeed() this.uploadReadedIfNeed()
} }
@ -481,7 +460,6 @@ export class Conversation extends Component<ConversationProps> implements Conver
this.vm.notifyListener() this.vm.notifyListener()
} }
render() { render() {
const { chatBg, channel } = this.props const { chatBg, channel } = this.props
@ -501,7 +479,6 @@ export class Conversation extends Component<ConversationProps> implements Conver
this.dragStart() this.dragStart()
}} className={classNames("wk-conversation-content")}> }} className={classNames("wk-conversation-content")}>
<div className="wk-conversation-messages" id={vm.messageContainerId} onScroll={this.handleScroll.bind(this)}> <div className="wk-conversation-messages" id={vm.messageContainerId} onScroll={this.handleScroll.bind(this)}>
{ {
vm.messages.map((message, i) => { vm.messages.map((message, i) => {

View File

@ -247,6 +247,9 @@ export default class ConversationVM extends ProviderListener {
if (!message.channel.isEqual(this.channel)) { if (!message.channel.isEqual(this.channel)) {
return return
} }
if(message.contentType == MessageContentTypeConst.rtcData) {
return
}
if(message.header.noPersist) { // 不存储的消息不显示 if(message.header.noPersist) { // 不存储的消息不显示
return return
} }
@ -618,7 +621,6 @@ export default class ConversationVM extends ProviderListener {
} }
if (change) { if (change) {
this.refreshNewMsgCount() this.refreshNewMsgCount()
console.log("refreshNewMsgCount---->")
} }
} }

View File

@ -17,6 +17,19 @@ export interface WKBaseState {
alertTitle?: string alertTitle?: string
onAlertOk?: () => void onAlertOk?: () => void
conversationSelectFinished?: (channel: Channel[]) => void conversationSelectFinished?: (channel: Channel[]) => void
showGlobalModal?: boolean // 显示全局弹窗
globalModalOptions?:GlobalModalOptions
}
export class GlobalModalOptions {
width?: string
height?: string
body?: ReactNode
footer?: ReactNode
className?: string
closable?: boolean
} }
export interface WKBaseProps{ export interface WKBaseProps{
@ -34,6 +47,10 @@ export interface WKBaseContext {
hideUserInfo(): void hideUserInfo(): void
// 弹出提示框 // 弹出提示框
showAlert(conf:{content:string,title?:string,onOk?:()=>void}): void showAlert(conf:{content:string,title?:string,onOk?:()=>void}): void
showGlobalModal(options:GlobalModalOptions):void
hideGlobalModal():void
} }
export default class WKBase extends Component<WKBaseProps, WKBaseState> implements WKBaseContext { export default class WKBase extends Component<WKBaseProps, WKBaseState> implements WKBaseContext {
@ -76,6 +93,18 @@ export default class WKBase extends Component<WKBaseProps, WKBaseState> implemen
}) })
} }
showGlobalModal(options:GlobalModalOptions) {
this.setState({
showGlobalModal: true,
globalModalOptions: options,
})
}
hideGlobalModal() {
this.setState({
showGlobalModal: false
})
}
componentDidMount() { componentDidMount() {
const { onContext } = this.props const { onContext } = this.props
if (onContext) { if (onContext) {
@ -143,6 +172,9 @@ export default class WKBase extends Component<WKBaseProps, WKBaseState> implemen
maskClosable={false}> maskClosable={false}>
{alertContent} {alertContent}
</Modal> </Modal>
<Modal closable={this.state.globalModalOptions?.closable} className={this.state.globalModalOptions?.className} visible={this.state.showGlobalModal} width={this.state.globalModalOptions?.width} footer={this.state.globalModalOptions?.footer}>
{this.state.globalModalOptions?.body}
</Modal>
</div> </div>
} }
} }

View File

@ -7,8 +7,8 @@ import { EndpointManager } from "./Service/Module";
import ConversationContext from "./Components/Conversation/context"; import ConversationContext from "./Components/Conversation/context";
export class MessageContextMenus { export class MessageContextMenus {
title!:string title!: string
onClick?:()=>void onClick?: () => void
} }
export class EndpointCommon { export class EndpointCommon {
@ -55,49 +55,62 @@ export class EndpointCommon {
const channel = param.channel as Channel const channel = param.channel as Channel
const conversation = WKSDK.shared().conversationManager.findConversation(channel) const conversation = WKSDK.shared().conversationManager.findConversation(channel)
let initLocateMessageSeq = 0 let initLocateMessageSeq = 0
if(conversation && conversation.lastMessage && conversation.unread>0 && conversation.lastMessage.messageSeq > conversation.unread) { if (conversation && conversation.lastMessage && conversation.unread > 0 && conversation.lastMessage.messageSeq > conversation.unread) {
initLocateMessageSeq = conversation.lastMessage.messageSeq - conversation.unread initLocateMessageSeq = conversation.lastMessage.messageSeq - conversation.unread
} }
WKApp.routeRight.replaceToRoot(<ChatContentPage key={channel.getChannelKey()} channel={channel} initLocateMessageSeq={initLocateMessageSeq}></ChatContentPage>) WKApp.routeRight.replaceToRoot(<ChatContentPage key={channel.getChannelKey()} channel={channel} initLocateMessageSeq={initLocateMessageSeq}></ChatContentPage>)
}, {}) }, {})
} }
registerMessageContextMenus(sid: string, handle: (message: Message,context:ConversationContext) => MessageContextMenus|null,sort?:number) { registerMessageContextMenus(sid: string, handle: (message: Message, context: ConversationContext) => MessageContextMenus | null, sort?: number) {
EndpointManager.shared.setMethod(sid, (param: any) => { EndpointManager.shared.setMethod(sid, (param: any) => {
return handle(param.message,param.context) return handle(param.message, param.context)
}, { }, {
category: EndpointCategory.messageContextMenus, category: EndpointCategory.messageContextMenus,
sort: sort, sort: sort,
}) })
} }
messageContextMenus(message: Message,ctx:ConversationContext): MessageContextMenus[] { messageContextMenus(message: Message, ctx: ConversationContext): MessageContextMenus[] {
return EndpointManager.shared.invokes(EndpointCategory.messageContextMenus, {message:message,context:ctx}) return EndpointManager.shared.invokes(EndpointCategory.messageContextMenus, { message: message, context: ctx })
} }
registerChatToolbar(sid:string,handle:(ctx:ConversationContext)=>React.ReactNode|undefined) { registerChatToolbar(sid: string, handle: (ctx: ConversationContext) => React.ReactNode | undefined) {
EndpointManager.shared.setMethod(sid,(param)=>{ EndpointManager.shared.setMethod(sid, (param) => {
return handle(param) return handle(param)
},{ }, {
category: EndpointCategory.chatToolbars category: EndpointCategory.chatToolbars
}) })
} }
chatToolbars(ctx:ConversationContext) :React.ReactNode[] { chatToolbars(ctx: ConversationContext): React.ReactNode[] {
return EndpointManager.shared.invokes(EndpointCategory.chatToolbars,ctx) return EndpointManager.shared.invokes(EndpointCategory.chatToolbars, ctx)
} }
registerChannelHeaderRightItem(id: string, callback: (param: any) => JSX.Element|undefined, sort?: number) {
EndpointManager.shared.setMethod(id, (param) => {
return callback(param)
}, {
category: EndpointCategory.channelHeaderRightItems,
sort: sort,
})
}
callOnLogin() { channelHeaderRightItems(channel:Channel): JSX.Element[] {
return EndpointManager.shared.invokes(EndpointCategory.channelHeaderRightItems,{channel:channel})
}
callOnLogin() {
const len = this._onLogins.length; const len = this._onLogins.length;
for (var i = 0; i < len; i++) { for (var i = 0; i < len; i++) {
this._onLogins[i]() this._onLogins[i]()
} }
} }
} }
export class ChatToolbar { export class ChatToolbar {
icon!:string icon!: string
onClick?:()=>void onClick?: () => void
} }

View File

@ -5,7 +5,6 @@ import { MessageContentTypeConst } from "../../Service/Const"
import MessageBase from "../Base" import MessageBase from "../Base"
import { MessageCell } from "../MessageCell" import { MessageCell } from "../MessageCell"
import "@lottiefiles/lottie-player/dist/tgs-player"; import "@lottiefiles/lottie-player/dist/tgs-player";
import LazyLoad from 'react-lazyload';

View File

@ -20,9 +20,6 @@ export class MessageBaseCell<P extends MessageBaseCellProps = MessageBaseCellPro
export class MessageCell<P extends MessageBaseCellProps = MessageBaseCellPropsImp, S = {}> extends MessageBaseCell<P, S> { export class MessageCell<P extends MessageBaseCellProps = MessageBaseCellPropsImp, S = {}> extends MessageBaseCell<P, S> {
componentDidMount(): void {
}
render() { render() {
return <div>MessageCell</div> return <div>MessageCell</div>
} }

View File

@ -8,6 +8,7 @@ import MessageTrail from "../Base/tail"
import MessageBase from "../Base" import MessageBase from "../Base"
import WKApp from "../../App" import WKApp from "../../App"
import { MessageContentTypeConst } from "../../Service/Const" import { MessageContentTypeConst } from "../../Service/Const"
import { MessageWrap } from "../../Service/Model"
var BenzAMRRecorder = require('benz-amr-recorder'); var BenzAMRRecorder = require('benz-amr-recorder');

View File

@ -210,6 +210,19 @@ body[theme-mode=dark] .wk-chat-conversation-header-channel-info-name {
align-items: center; align-items: center;
} }
.wk-chat-conversation-header-right div {
margin-right: 10px;
display: flex;
align-items: center;
justify-content: center;
width: 40px;
height: 40px;
}
.wk-chat-conversation-header-right div:last-child {
margin-right: 0px;
}
.wk-chat-conversation-header-setting { .wk-chat-conversation-header-setting {
display: flex; display: flex;
align-items: center; align-items: center;
@ -294,3 +307,20 @@ body[theme-mode=dark] .wk-chat-popover {
margin-left: 10px; margin-left: 10px;
font-size: 14px; font-size: 14px;
} }
.wk-chat-conversation-header-right-item {
position: relative;
}
.wk-conversation-header-mask {
background-color: rgb(0,0,0,0.0);
position: absolute;
width: 100%;
height: 100%;
top: 0px;
border-radius: 100%;
}
.wk-conversation-header-mask:hover {
background-color: rgb(0,0,0,0.1);
}

View File

@ -19,7 +19,7 @@ import ConversationContext from "../../Components/Conversation/context";
export interface ChatContentPageProps { export interface ChatContentPageProps {
channel: Channel channel: Channel
initLocateMessageSeq?:number initLocateMessageSeq?: number
} }
export interface ChatContentPageState { export interface ChatContentPageState {
@ -27,7 +27,7 @@ export interface ChatContentPageState {
} }
export class ChatContentPage extends Component<ChatContentPageProps, ChatContentPageState> { export class ChatContentPage extends Component<ChatContentPageProps, ChatContentPageState> {
channelInfoListener!: ChannelInfoListener channelInfoListener!: ChannelInfoListener
conversationContext!:ConversationContext conversationContext!: ConversationContext
constructor(props: any) { constructor(props: any) {
super(props) super(props)
this.state = { this.state = {
@ -51,7 +51,7 @@ export class ChatContentPage extends Component<ChatContentPageProps, ChatContent
} }
render(): React.ReactNode { render(): React.ReactNode {
const { channel,initLocateMessageSeq } = this.props const { channel, initLocateMessageSeq } = this.props
const { showChannelSetting } = this.state const { showChannelSetting } = this.state
const channelInfo = WKSDK.shared().channelManager.getChannelInfo(channel) const channelInfo = WKSDK.shared().channelManager.getChannelInfo(channel)
if (!channelInfo) { if (!channelInfo) {
@ -89,17 +89,28 @@ export class ChatContentPage extends Component<ChatContentPageProps, ChatContent
</div> </div>
</div> </div>
<div className="wk-chat-conversation-header-right"> <div className="wk-chat-conversation-header-right">
<div className="wk-chat-conversation-header-setting"> {
<svg className="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2166" width="24" height="24"><path d="M512 298.6496a85.3504 85.3504 0 1 0 0-170.6496 85.3504 85.3504 0 0 0 0 170.6496z" p-id="2167"></path><path d="M512 512m-85.3504 0a85.3504 85.3504 0 1 0 170.7008 0 85.3504 85.3504 0 1 0-170.7008 0Z" p-id="2168"></path><path d="M512 896a85.3504 85.3504 0 1 0 0-170.7008 85.3504 85.3504 0 0 0 0 170.7008z" p-id="2169"></path></svg> WKApp.endpoints.channelHeaderRightItems(channel).map((item:any,i:number) => {
return <div key={i} className="wk-chat-conversation-header-right-item">
{
item
}
</div>
})
}
<div className="wk-chat-conversation-header-right-item">
<svg fill={WKApp.config.themeColor} height="28px" role="presentation" viewBox="0 0 36 36" width="28px"><path clipRule="evenodd" d="M18 29C24.0751 29 29 24.0751 29 18C29 11.9249 24.0751 7 18 7C11.9249 7 7 11.9249 7 18C7 24.0751 11.9249 29 18 29ZM19.5 18C19.5 18.8284 18.8284 19.5 18 19.5C17.1716 19.5 16.5 18.8284 16.5 18C16.5 17.1716 17.1716 16.5 18 16.5C18.8284 16.5 19.5 17.1716 19.5 18ZM23 19.5C23.8284 19.5 24.5 18.8284 24.5 18C24.5 17.1716 23.8284 16.5 23 16.5C22.1716 16.5 21.5 17.1716 21.5 18C21.5 18.8284 22.1716 19.5 23 19.5ZM14.5 18C14.5 18.8284 13.8284 19.5 13 19.5C12.1716 19.5 11.5 18.8284 11.5 18C11.5 17.1716 12.1716 16.5 13 16.5C13.8284 16.5 14.5 17.1716 14.5 18Z" fillRule="evenodd"></path></svg>
<div className="wk-conversation-header-mask">
</div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div className="wk-chat-conversation"> <div className="wk-chat-conversation">
<Conversation initLocateMessageSeq={initLocateMessageSeq} shouldShowHistorySplit={true} onContext={(ctx)=>{ <Conversation initLocateMessageSeq={initLocateMessageSeq} shouldShowHistorySplit={true} onContext={(ctx) => {
this.conversationContext = ctx this.conversationContext = ctx
this.setState({}) this.setState({})
}} key={channel.getChannelKey()} chatBg={WKApp.config.themeMode === ThemeMode.dark?undefined:require("./assets/chat_bg.svg").default} channel={channel}></Conversation> }} key={channel.getChannelKey()} chatBg={WKApp.config.themeMode === ThemeMode.dark ? undefined : require("./assets/chat_bg.svg").default} channel={channel}></Conversation>
</div> </div>
</div> </div>
@ -140,12 +151,12 @@ export default class ChatPage extends Component<any> {
<div className="wk-chat-title"> <div className="wk-chat-title">
{vm.connectTitle} {vm.connectTitle}
</div> </div>
<Popover onClickOutSide={()=>{ <Popover onClickOutSide={() => {
vm.showAddPopover = false vm.showAddPopover = false
}} className="wk-chat-popover" position="bottomRight" visible={vm.showAddPopover} showArrow={false} trigger="custom" content={<ChatMenusPopover onItem={()=>{ }} className="wk-chat-popover" position="bottomRight" visible={vm.showAddPopover} showArrow={false} trigger="custom" content={<ChatMenusPopover onItem={() => {
vm.showAddPopover = false vm.showAddPopover = false
}}></ChatMenusPopover>}> }}></ChatMenusPopover>}>
<div className="wk-chat-search-add" onClick={()=>{ <div className="wk-chat-search-add" onClick={() => {
vm.showAddPopover = !vm.showAddPopover vm.showAddPopover = !vm.showAddPopover
}}> }}>
<IconPlus size="large"></IconPlus> <IconPlus size="large"></IconPlus>
@ -180,7 +191,7 @@ interface ChatMenusPopoverState {
} }
interface ChatMenusPopoverProps { interface ChatMenusPopoverProps {
onItem?:(menus:ChatMenus)=>void onItem?: (menus: ChatMenus) => void
} }
class ChatMenusPopover extends Component<ChatMenusPopoverProps, ChatMenusPopoverState> { class ChatMenusPopover extends Component<ChatMenusPopoverProps, ChatMenusPopoverState> {
constructor(props: any) { constructor(props: any) {
@ -201,12 +212,12 @@ class ChatMenusPopover extends Component<ChatMenusPopoverProps, ChatMenusPopover
return <div className="wk-chatmenuspopover"> return <div className="wk-chatmenuspopover">
<ul> <ul>
{ {
chatMenus.map((c,i) => { chatMenus.map((c, i) => {
return <li key={i} onClick={()=>{ return <li key={i} onClick={() => {
if(c.onClick) { if (c.onClick) {
c.onClick() c.onClick()
} }
if(onItem) { if (onItem) {
onItem(c) onItem(c)
} }
}}> }}>

View File

@ -153,7 +153,6 @@ export class ChatVM extends ProviderListener {
} }
currentConversationListY() { currentConversationListY() {
const conversationElem = document.getElementById(this.conversationListID) const conversationElem = document.getElementById(this.conversationListID)
console.log("conversationElem---->", conversationElem)
if (!conversationElem) { if (!conversationElem) {
return return
} }

View File

@ -21,6 +21,7 @@ export class EndpointCategory {
static friendApplyDataChange:string = "friendApplyDataChange" // 好友申请数据改变 static friendApplyDataChange:string = "friendApplyDataChange" // 好友申请数据改变
static chatMenusPopover:string = "chatMenusPopover" // 聊天菜单气泡 static chatMenusPopover:string = "chatMenusPopover" // 聊天菜单气泡
static chatToolbars = "chatToolbars" // 聊天工具栏 static chatToolbars = "chatToolbars" // 聊天工具栏
static channelHeaderRightItems = "channelHeaderRightItems" // 频道头部右侧items
} }
@ -58,6 +59,19 @@ export class MessageContentTypeConst {
static newGroupOwner: number = 1008 // 成为新群主 static newGroupOwner: number = 1008 // 成为新群主
static screenshot:number = 1014 // 截屏消息 static screenshot:number = 1014 // 截屏消息
// 音频通话消息号段 9900 - 9999
static rtcResult:number = 9989 // 音视频通话结果
static rtcSwitchToVideo = 9990 // 切换到视频通话
static rtcSwitchToVideoReply = 9991 // 切换到视频回复
static rtcCancel:number = 9992 // 取消通话
static rtcSwitchToAudio = 9993 // 音视频切换(未接通时)
static rtcData:number = 9994 // rtc信令数据类型
static rtcMissed:number =9995 // 未接听
static rtcReceived:number = 9996 // 收到通话
static rtcRefue:number = 9997; // 拒绝通话
static rtcAccept:number = 9998; // 接受通话
static rtcHangup:number = 9999; // 挂断通话
} }
// 用户关系 // 用户关系

View File

@ -1,4 +1,4 @@
import { Channel, ChannelTypePerson, WKSDK, Message, MessageContentType, ConversationAction, ChannelTypeGroup, ChannelInfo,CMDContent, MessageText } from "wukongimjssdk"; import { Channel, ChannelTypePerson, WKSDK, Message, MessageContentType, ConversationAction, ChannelTypeGroup, ChannelInfo, CMDContent, MessageText } from "wukongimjssdk";
import React, { ElementType } from "react"; import React, { ElementType } from "react";
import WKApp, { FriendApply, FriendApplyState, ThemeMode } from "./App"; import WKApp, { FriendApply, FriendApplyState, ThemeMode } from "./App";
import ChannelQRCode from "./Components/ChannelQRCode"; import ChannelQRCode from "./Components/ChannelQRCode";
@ -287,6 +287,9 @@ export default class BaseModule implements IModule {
if (channelInfo && channelInfo.mute) { if (channelInfo && channelInfo.mute) {
return return
} }
if (!message.header.reddot) { // 不显示红点的消息不发通知
return
}
if (window.Notification && Notification.permission !== "denied") { if (window.Notification && Notification.permission !== "denied") {
@ -295,7 +298,7 @@ export default class BaseModule implements IModule {
icon: WKApp.shared.avatarChannel(message.channel), icon: WKApp.shared.avatarChannel(message.channel),
lang: 'zh-CN', lang: 'zh-CN',
tag: "tag", tag: "tag",
renotify: true, renotify: true
}); });
notify.onclick = () => { notify.onclick = () => {
@ -309,6 +312,9 @@ export default class BaseModule implements IModule {
notify.close(); notify.close();
}, 5000); }, 5000);
} }
notify.onclose = () => {
console.log("通知关闭")
}
} }
} }

View File

@ -47,6 +47,12 @@ export default class ContactsList extends Component<any, ContactsState> {
} }
} }
componentWillUnmount() {
ContactsListManager.shared.setRefreshList = undefined
WKApp.dataSource.removeContactsChangeListener(this.contactsChangeListener)
}
rebuildIndex() { rebuildIndex() {
console.log("rebuildIndex---->") console.log("rebuildIndex---->")
this.buildIndex(this.contactsList()) this.buildIndex(this.contactsList())
@ -75,10 +81,6 @@ export default class ContactsList extends Component<any, ContactsState> {
}) })
} }
componentWillUnmount() {
WKApp.dataSource.removeContactsChangeListener(this.contactsChangeListener)
}
buildIndex(contacts: Contacts[]) { buildIndex(contacts: Contacts[]) {
const indexItemMap = new Map<string, Contacts[]>() const indexItemMap = new Map<string, Contacts[]>()

View File

@ -5,8 +5,10 @@ export class ContactsListManager {
} }
public static shared = new ContactsListManager() public static shared = new ContactsListManager()
setRefreshList!:()=>void setRefreshList?:()=>void
refreshList() { refreshList() {
if(this.setRefreshList) {
this.setRefreshList() this.setRefreshList()
} }
}
} }

196
yarn.lock
View File

@ -1041,7 +1041,7 @@
"@babel/helper-validator-option" "^7.18.6" "@babel/helper-validator-option" "^7.18.6"
"@babel/plugin-transform-typescript" "^7.18.6" "@babel/plugin-transform-typescript" "^7.18.6"
"@babel/runtime-corejs3@^7.10.2", "@babel/runtime-corejs3@^7.15.4": "@babel/runtime-corejs3@^7.10.2":
version "7.19.1" version "7.19.1"
resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.19.1.tgz#f0cbbe7edda7c4109cd253bb1dee99aba4594ad9" resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.19.1.tgz#f0cbbe7edda7c4109cd253bb1dee99aba4594ad9"
integrity sha512-j2vJGnkopRzH+ykJ8h68wrHnEUmtK//E723jjixiAl/PPf6FhqY/vYRcMVlNydRKQjQsTsYEjpx+DZMIvnGk/g== integrity sha512-j2vJGnkopRzH+ykJ8h68wrHnEUmtK//E723jjixiAl/PPf6FhqY/vYRcMVlNydRKQjQsTsYEjpx+DZMIvnGk/g==
@ -1056,13 +1056,20 @@
dependencies: dependencies:
regenerator-runtime "^0.13.2" regenerator-runtime "^0.13.2"
"@babel/runtime@^7.0.0", "@babel/runtime@^7.10.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.16.3", "@babel/runtime@^7.18.3", "@babel/runtime@^7.18.9", "@babel/runtime@^7.2.0", "@babel/runtime@^7.3.4", "@babel/runtime@^7.5.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4": "@babel/runtime@^7.0.0", "@babel/runtime@^7.10.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.16.3", "@babel/runtime@^7.18.3", "@babel/runtime@^7.18.9", "@babel/runtime@^7.3.4", "@babel/runtime@^7.5.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4":
version "7.19.0" version "7.19.0"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.19.0.tgz#22b11c037b094d27a8a2504ea4dcff00f50e2259" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.19.0.tgz#22b11c037b094d27a8a2504ea4dcff00f50e2259"
integrity sha512-eR8Lo9hnDS7tqkO7NsV+mKvCmv5boaXFSZ70DnfhcgiEne8hv9oCEd36Klw74EtizEqLsy4YnW8UWwpBVolHZA== integrity sha512-eR8Lo9hnDS7tqkO7NsV+mKvCmv5boaXFSZ70DnfhcgiEne8hv9oCEd36Klw74EtizEqLsy4YnW8UWwpBVolHZA==
dependencies: dependencies:
regenerator-runtime "^0.13.4" regenerator-runtime "^0.13.4"
"@babel/runtime@^7.21.0":
version "7.22.11"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.11.tgz#7a9ba3bbe406ad6f9e8dd4da2ece453eb23a77a4"
integrity sha512-ee7jVNlWN09+KftVOu9n7S8gQzD/Z6hN/I8VBRXW4P1+Xe7kJGXMwu8vds4aGIMHZnNbdpSWCfZZtinytpcAvA==
dependencies:
regenerator-runtime "^0.14.0"
"@babel/runtime@^7.7.2", "@babel/runtime@^7.8.7": "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.7":
version "7.22.10" version "7.22.10"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.10.tgz#ae3e9631fd947cb7e3610d3e9d8fef5f76696682" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.10.tgz#ae3e9631fd947cb7e3610d3e9d8fef5f76696682"
@ -1127,88 +1134,113 @@
resolved "https://registry.yarnpkg.com/@csstools/normalize.css/-/normalize.css-10.1.0.tgz#f0950bba18819512d42f7197e56c518aa491cf18" resolved "https://registry.yarnpkg.com/@csstools/normalize.css/-/normalize.css-10.1.0.tgz#f0950bba18819512d42f7197e56c518aa491cf18"
integrity sha512-ij4wRiunFfaJxjB0BdrYHIH8FxBJpOwNPhhAcunlmPdXudL1WQV1qoP9un6JsEBAgQH+7UXyyjh0g7jTxXK6tg== integrity sha512-ij4wRiunFfaJxjB0BdrYHIH8FxBJpOwNPhhAcunlmPdXudL1WQV1qoP9un6JsEBAgQH+7UXyyjh0g7jTxXK6tg==
"@douyinfe/semi-animation-react@2.23.5": "@dnd-kit/accessibility@^3.0.0":
version "2.23.5" version "3.0.1"
resolved "https://registry.yarnpkg.com/@douyinfe/semi-animation-react/-/semi-animation-react-2.23.5.tgz#c106e869ddaa2f2fa4dd34381b601f42e4f83ed4" resolved "https://registry.yarnpkg.com/@dnd-kit/accessibility/-/accessibility-3.0.1.tgz#3ccbefdfca595b0a23a5dc57d3de96bc6935641c"
integrity sha512-TIIUpcUGCRJDejkQxVMSEiogLM73P3vXZLuAxyxXg+cW5I/TK6ekynDswoE0M/pQf4hymrvuZPVq/MOD+ow6cA== integrity sha512-HXRrwS9YUYQO9lFRc/49uO/VICbM+O+ZRpFDe9Pd1rwVv2PCNkRiTZRdxrDgng/UkvdC3Re9r2vwPpXXrWeFzg==
dependencies: dependencies:
"@douyinfe/semi-animation" "2.12.0" tslib "^2.0.0"
"@douyinfe/semi-animation-styled" "2.23.2"
"@dnd-kit/core@^6.0.8":
version "6.0.8"
resolved "https://registry.yarnpkg.com/@dnd-kit/core/-/core-6.0.8.tgz#040ae13fea9787ee078e5f0361f3b49b07f3f005"
integrity sha512-lYaoP8yHTQSLlZe6Rr9qogouGUz9oRUj4AHhDQGQzq/hqaJRpFo65X+JKsdHf8oUFBzx5A+SJPUvxAwTF2OabA==
dependencies:
"@dnd-kit/accessibility" "^3.0.0"
"@dnd-kit/utilities" "^3.2.1"
tslib "^2.0.0"
"@dnd-kit/sortable@^7.0.2":
version "7.0.2"
resolved "https://registry.yarnpkg.com/@dnd-kit/sortable/-/sortable-7.0.2.tgz#791d550872457f3f3c843e00d159b640f982011c"
integrity sha512-wDkBHHf9iCi1veM834Gbk1429bd4lHX4RpAwT0y2cHLf246GAvU2sVw/oxWNpPKQNQRQaeGXhAVgrOl1IT+iyA==
dependencies:
"@dnd-kit/utilities" "^3.2.0"
tslib "^2.0.0"
"@dnd-kit/utilities@^3.2.0", "@dnd-kit/utilities@^3.2.1":
version "3.2.1"
resolved "https://registry.yarnpkg.com/@dnd-kit/utilities/-/utilities-3.2.1.tgz#53f9e2016fd2506ec49e404c289392cfff30332a"
integrity sha512-OOXqISfvBw/1REtkSK2N3Fi2EQiLMlWUlqnOK/UpOISqBZPWpE6TqL+jcPtMOkE8TqYGiURvRdPSI9hltNUjEA==
dependencies:
tslib "^2.0.0"
"@douyinfe/semi-animation-react@2.42.3":
version "2.42.3"
resolved "https://registry.yarnpkg.com/@douyinfe/semi-animation-react/-/semi-animation-react-2.42.3.tgz#7fa8c37780f0885198bbf434e36ab68e6bc3ec83"
integrity sha512-nrPebgRBN9Kgdq+EVgwNn2lmd3aSys5vc6i/0yHxcjZfVa37WxsU8BRN2itaW5u9QJ41zKSinPXTnElbgnbtdA==
dependencies:
"@douyinfe/semi-animation" "2.42.3"
"@douyinfe/semi-animation-styled" "2.42.3"
classnames "^2.2.6" classnames "^2.2.6"
"@douyinfe/semi-animation-styled@2.23.2": "@douyinfe/semi-animation-styled@2.42.3":
version "2.23.2" version "2.42.3"
resolved "https://registry.yarnpkg.com/@douyinfe/semi-animation-styled/-/semi-animation-styled-2.23.2.tgz#f18bc074515441c297cc636ed98521e249d093c9" resolved "https://registry.yarnpkg.com/@douyinfe/semi-animation-styled/-/semi-animation-styled-2.42.3.tgz#c03442387200cbb2053e065a2765a1d676784149"
integrity sha512-cKaA1yGHPF76Rx7EZDZicj+1oX1su2wnqb/UGFOTquAwqWmkTfgQ+EKxCd/N704WH+RtmGf4xbrJKpBvvcEdSQ== integrity sha512-qmOLJuMRIR8feAZCvJ6h7da0LD4e7im3uGc4a0ZcjT36XPFwngijbC/kXSO2aYLoY3hGlrxMmIJ6HlX3+bGnFQ==
"@douyinfe/semi-animation@2.12.0": "@douyinfe/semi-animation@2.42.3":
version "2.12.0" version "2.42.3"
resolved "https://registry.yarnpkg.com/@douyinfe/semi-animation/-/semi-animation-2.12.0.tgz#51fe52d3911c2591a80a6e9fe96e6809c1511f13" resolved "https://registry.yarnpkg.com/@douyinfe/semi-animation/-/semi-animation-2.42.3.tgz#267386f780e31c202e3f033e3bb6df019b90ed5c"
integrity sha512-OAfL9Nk38ZPqfdKm9k4cvVXXzm16ALI4LxGNZ0qfe2RCLLnYGB/hNzTctoTDjYD35dFv0yroh3qsXtZuP2xNdg== integrity sha512-RrYjHl6CyQVUX3MVCllZUUVQdBDBNOhEgJox/cc+Y64WW6YKg7zML6f5jWVXt3srwR8ksYWXzvnFT4gYlfn6CQ==
dependencies:
"@babel/runtime-corejs3" "^7.15.4"
bezier-easing "^2.1.0"
"@douyinfe/semi-animation@2.23.5":
version "2.23.5"
resolved "https://registry.yarnpkg.com/@douyinfe/semi-animation/-/semi-animation-2.23.5.tgz#6d5bc3f3d86aecf0e80255c526f5afab95cadb9d"
integrity sha512-EEu4RWPTK1ksUB6SwTxmdgJ3qlDD0GaB9Azay4H93bknR/cV2lpbAhzes6nz3EiLua00MpJPQaLWQxs57nNWnw==
dependencies: dependencies:
bezier-easing "^2.1.0" bezier-easing "^2.1.0"
"@douyinfe/semi-foundation@2.23.5": "@douyinfe/semi-foundation@2.42.3":
version "2.23.5" version "2.42.3"
resolved "https://registry.yarnpkg.com/@douyinfe/semi-foundation/-/semi-foundation-2.23.5.tgz#b3a7cbfc6ce01644e852b19c91025cf03c75e51f" resolved "https://registry.yarnpkg.com/@douyinfe/semi-foundation/-/semi-foundation-2.42.3.tgz#5919a0866b90a56bd916ed01e492c56842abc751"
integrity sha512-gEBhVzRlxedpxuCadX9uIHamOvFrNsyKUtFc/Jcr4WMOaJMrcHh3IgIHxmNK2RSvRLnX4/iUsLDNZGcSlh1mjQ== integrity sha512-jNd6BdTzuioqgmsZcnC5Nl2tP+XOALgxiVc1mffx/oz2MUp7X/4zm8UR2VchgWbpx0nZ0JSmZDfU7XWIdcHQDg==
dependencies: dependencies:
"@douyinfe/semi-animation" "2.12.0" "@douyinfe/semi-animation" "2.42.3"
async-validator "^3.5.0" async-validator "^3.5.0"
classnames "^2.2.6" classnames "^2.2.6"
date-fns "^2.9.0" date-fns "^2.29.3"
date-fns-tz "^1.0.10" date-fns-tz "^1.3.8"
lodash "^4.17.21" lodash "^4.17.21"
memoize-one "^5.2.1" memoize-one "^5.2.1"
scroll-into-view-if-needed "^2.2.24" scroll-into-view-if-needed "^2.2.24"
"@douyinfe/semi-icons@2.23.5": "@douyinfe/semi-icons@2.42.3":
version "2.23.5" version "2.42.3"
resolved "https://registry.yarnpkg.com/@douyinfe/semi-icons/-/semi-icons-2.23.5.tgz#856180dd51b20986ac181fe6e849abda581efa6b" resolved "https://registry.yarnpkg.com/@douyinfe/semi-icons/-/semi-icons-2.42.3.tgz#8a7c08fe2843f45a7c6c8856f3cf44f446bfc44a"
integrity sha512-fknH7iCb9iIp35xWM4+MP/zbRicAp0Z4ijSt9UQAS6Xsza42sAAqKI3rswdmgiE4hPd2syg9fxnR9mb/JaiW+w== integrity sha512-0LTpJFmpUZPAraquUwwfI8fCQ+7APMSgQlFymajd75Y1shY5I9Tzu8wClQnn0ME0ORGMwA3WQXgs9HOL0nTVXg==
dependencies: dependencies:
classnames "^2.2.6" classnames "^2.2.6"
"@douyinfe/semi-illustrations@2.23.5": "@douyinfe/semi-illustrations@2.42.3":
version "2.23.5" version "2.42.3"
resolved "https://registry.yarnpkg.com/@douyinfe/semi-illustrations/-/semi-illustrations-2.23.5.tgz#0336378b114b1be46a19331ab8b163b09055586a" resolved "https://registry.yarnpkg.com/@douyinfe/semi-illustrations/-/semi-illustrations-2.42.3.tgz#410371b856c906dc2990afa24c53fc51172aff95"
integrity sha512-hnx+WztfiZaqAR0zOsBreSSE+TRNxA2+fi9eW6dtwjRJDg6thA4VcW4T3bkhBv9il3oSNHV/He3w4I1NbRatsQ== integrity sha512-mUImwMivJB35++2leWkzhB1gFChZZKz7dULMfopU11oOC0p6lXu9rToXf6u01bgHnCKt9WuZ9Ic/1Byqi1UVFA==
"@douyinfe/semi-theme-default@2.23.5": "@douyinfe/semi-theme-default@2.42.3":
version "2.23.5" version "2.42.3"
resolved "https://registry.yarnpkg.com/@douyinfe/semi-theme-default/-/semi-theme-default-2.23.5.tgz#54a2f99db79ff7e2fc6137f0d5bf82d3bffdbaca" resolved "https://registry.yarnpkg.com/@douyinfe/semi-theme-default/-/semi-theme-default-2.42.3.tgz#45b4d265d983d7c80848977b525063bb7f401913"
integrity sha512-zBTUB6aYMP6C3QctmFdg7ChN6wctgONKHvlbhvowMZ5M/YQrCPIYxu1LwUN+a2dSnbwY+1aKC+5t6firBMNThw== integrity sha512-kr+Jead5Hja0w7uIOHMvB+GqiTzCRoAvCHAFf0bhMv6oSxkVplIxuBLgVasIzU0x99fOT2LPclWcOFvaMSuSTg==
dependencies: dependencies:
glob "^7.1.6" glob "^7.1.6"
"@douyinfe/semi-ui@^2.23.5": "@douyinfe/semi-ui@^2.24.2":
version "2.23.5" version "2.42.3"
resolved "https://registry.yarnpkg.com/@douyinfe/semi-ui/-/semi-ui-2.23.5.tgz#06c5bd1ce868d9966412ed847293aed605292928" resolved "https://registry.yarnpkg.com/@douyinfe/semi-ui/-/semi-ui-2.42.3.tgz#f5b622420891287e6a4c07eefc426df25f3555c6"
integrity sha512-DOE8OPvX7VHapZ8AnXTr6sssQO9Ct/yHC+Ja56g5lL9hyq+UkSX6ENXocPA2+DDX/2jxL2UiiZtyp7hPtZpJsA== integrity sha512-udBLfq36/Mjzr2JEUxnVWAlXokqK0E/2XsRS+h0ZdV6lTM31b1Eg1U8W9hknY5qa6x1+wQ99etYWbS0hm5QiRA==
dependencies: dependencies:
"@douyinfe/semi-animation" "2.23.5" "@dnd-kit/core" "^6.0.8"
"@douyinfe/semi-animation-react" "2.23.5" "@dnd-kit/sortable" "^7.0.2"
"@douyinfe/semi-foundation" "2.23.5" "@dnd-kit/utilities" "^3.2.1"
"@douyinfe/semi-icons" "2.23.5" "@douyinfe/semi-animation" "2.42.3"
"@douyinfe/semi-illustrations" "2.23.5" "@douyinfe/semi-animation-react" "2.42.3"
"@douyinfe/semi-theme-default" "2.23.5" "@douyinfe/semi-foundation" "2.42.3"
"@douyinfe/semi-icons" "2.42.3"
"@douyinfe/semi-illustrations" "2.42.3"
"@douyinfe/semi-theme-default" "2.42.3"
async-validator "^3.5.0" async-validator "^3.5.0"
classnames "^2.2.6" classnames "^2.2.6"
copy-text-to-clipboard "^2.1.1" copy-text-to-clipboard "^2.1.1"
date-fns "^2.9.0" date-fns "^2.29.3"
date-fns-tz "^1.0.10" date-fns-tz "^1.3.8"
lodash "^4.17.21" lodash "^4.17.21"
prop-types "^15.7.2" prop-types "^15.7.2"
react-resizable "^1.8.0" react-resizable "^3.0.5"
react-sortable-hoc "^2.0.0"
react-window "^1.8.2" react-window "^1.8.2"
resize-observer-polyfill "^1.5.1" resize-observer-polyfill "^1.5.1"
scroll-into-view-if-needed "^2.2.24" scroll-into-view-if-needed "^2.2.24"
@ -4518,15 +4550,17 @@ data-urls@^2.0.0:
whatwg-mimetype "^2.3.0" whatwg-mimetype "^2.3.0"
whatwg-url "^8.0.0" whatwg-url "^8.0.0"
date-fns-tz@^1.0.10: date-fns-tz@^1.3.8:
version "1.3.7" version "1.3.8"
resolved "https://registry.yarnpkg.com/date-fns-tz/-/date-fns-tz-1.3.7.tgz#e8e9d2aaceba5f1cc0e677631563081fdcb0e69a" resolved "https://registry.yarnpkg.com/date-fns-tz/-/date-fns-tz-1.3.8.tgz#083e3a4e1f19b7857fa0c18deea6c2bc46ded7b9"
integrity sha512-1t1b8zyJo+UI8aR+g3iqr5fkUHWpd58VBx8J/ZSQ+w7YrGlw80Ag4sA86qkfCXRBLmMc4I2US+aPMd4uKvwj5g== integrity sha512-qwNXUFtMHTTU6CFSFjoJ80W8Fzzp24LntbjFFBgL/faqds4e5mo9mftoRLgr3Vi1trISsg4awSpYVsOQCRnapQ==
date-fns@^2.9.0: date-fns@^2.29.3:
version "2.29.3" version "2.30.0"
resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.29.3.tgz#27402d2fc67eb442b511b70bbdf98e6411cd68a8" resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.30.0.tgz#f367e644839ff57894ec6ac480de40cae4b0f4d0"
integrity sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA== integrity sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==
dependencies:
"@babel/runtime" "^7.21.0"
debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.9: debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.9:
version "2.6.9" version "2.6.9"
@ -9679,7 +9713,7 @@ prompts@^2.0.1:
kleur "^3.0.3" kleur "^3.0.3"
sisteransi "^1.0.5" sisteransi "^1.0.5"
prop-types@15.x, prop-types@^15.5.7, prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.7.2, prop-types@^15.8.1: prop-types@15.x, prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.7.2, prop-types@^15.8.1:
version "15.8.1" version "15.8.1"
resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5"
integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==
@ -9969,10 +10003,10 @@ react-refresh@^0.8.3:
resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.8.3.tgz#721d4657672d400c5e3c75d063c4a85fb2d5d68f" resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.8.3.tgz#721d4657672d400c5e3c75d063c4a85fb2d5d68f"
integrity sha512-X8jZHc7nCMjaCqoU+V2I0cOhNW+QMBwSUkeXnTi8IPe6zaRWfn60ZzvFDZqWPfmSJfjub7dDW1SP0jaHWLu/hg== integrity sha512-X8jZHc7nCMjaCqoU+V2I0cOhNW+QMBwSUkeXnTi8IPe6zaRWfn60ZzvFDZqWPfmSJfjub7dDW1SP0jaHWLu/hg==
react-resizable@^1.8.0: react-resizable@^3.0.5:
version "1.11.1" version "3.0.5"
resolved "https://registry.yarnpkg.com/react-resizable/-/react-resizable-1.11.1.tgz#02ca6850afa7a22c1b3e623e64aef71ee252af69" resolved "https://registry.yarnpkg.com/react-resizable/-/react-resizable-3.0.5.tgz#362721f2efbd094976f1780ae13f1ad7739786c1"
integrity sha512-S70gbLaAYqjuAd49utRHibtHLrHXInh7GuOR+6OO6RO6uleQfuBnWmZjRABfqNEx3C3Z6VPLg0/0uOYFrkfu9Q== integrity sha512-vKpeHhI5OZvYn82kXOs1bC8aOXktGU5AmKAgaZS4F5JPburCtbmDPqE7Pzp+1kN4+Wb81LlF33VpGwWwtXem+w==
dependencies: dependencies:
prop-types "15.x" prop-types "15.x"
react-draggable "^4.0.3" react-draggable "^4.0.3"
@ -10051,15 +10085,6 @@ react-scroll@^1.8.4:
lodash.throttle "^4.1.1" lodash.throttle "^4.1.1"
prop-types "^15.7.2" prop-types "^15.7.2"
react-sortable-hoc@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/react-sortable-hoc/-/react-sortable-hoc-2.0.0.tgz#f6780d8aa4b922a21f3e754af542f032677078b7"
integrity sha512-JZUw7hBsAHXK7PTyErJyI7SopSBFRcFHDjWW5SWjcugY0i6iH7f+eJkY8cJmGMlZ1C9xz1J3Vjz0plFpavVeRg==
dependencies:
"@babel/runtime" "^7.2.0"
invariant "^2.2.4"
prop-types "^15.5.7"
react-spinners@^0.11.0: react-spinners@^0.11.0:
version "0.11.0" version "0.11.0"
resolved "https://registry.yarnpkg.com/react-spinners/-/react-spinners-0.11.0.tgz#186fd150cc9f7ab1436227f70d5d113b47e9e43d" resolved "https://registry.yarnpkg.com/react-spinners/-/react-spinners-0.11.0.tgz#186fd150cc9f7ab1436227f70d5d113b47e9e43d"
@ -11587,6 +11612,11 @@ tslib@^1.8.1:
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
tslib@^2.0.0:
version "2.6.2"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae"
integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==
tslib@^2.0.3: tslib@^2.0.3:
version "2.4.0" version "2.4.0"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3"
@ -12527,10 +12557,10 @@ ws@^7.3.1, ws@^7.4.6:
resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591"
integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==
wukongimjssdk@^1.1.1: wukongimjssdk@^1.1.2:
version "1.1.1" version "1.1.2"
resolved "https://registry.yarnpkg.com/wukongimjssdk/-/wukongimjssdk-1.1.1.tgz#c0c723016d6198d16a2af0b44b9e806dc1b2378f" resolved "https://registry.yarnpkg.com/wukongimjssdk/-/wukongimjssdk-1.1.2.tgz#d1f781a1c5d4fb32217bba939b7000e09d04bf22"
integrity sha512-2CPnKL55V6TWVA/nTK8g3Hs0Z4REqSIxtkEiM1x2SZqDnfgdjv2E6qAU8vatC2K/9d7gL8vXKKZiSNoCo9F3aA== integrity sha512-x1xAnn17jHZshZnt53eiccMOffYIaIy+6CHH9NWS6p2aefJibX3LfHODrQWQJkoJ4ppGtfGfuqukkYgwTIqxiw==
dependencies: dependencies:
"@types/bignumber.js" "^5.0.0" "@types/bignumber.js" "^5.0.0"
"@types/crypto-js" "^4.0.2" "@types/crypto-js" "^4.0.2"