tjc-sdk
Version:
TIANJI IM SDK
2 lines (1 loc) • 4.57 kB
JavaScript
import{EventEmitter as t}from"events";import e from"../../client/tjc.js";import i from"../internal/ptt.min.js";import s from"./pttErrorCode.js";import r from"../../model/conversationType.js";import n from"../../model/groupMemberType.js";import o from"../../model/nullGroupInfo.js";import l from"../../model/modifyGroupInfoType.js";import a from"../../client/userSettingScope.js";import h from"./pttEventType.js";class u{static SINGLE_CHAT_MAX_SPEAKER_COUNT=1;static GROUP_CHAT_MAX_SPEAKER_COUNT=3;static SINGLE_CHAT_SEND_VOICE_MESSAGE=!0;static GROUP_CHAT_SEND_VOICE_MESSAGE=!0;static SINGLE_CHAT_MAX_SPEAK_TIME=60;static GROUP_CHAT_MAX_SPEAK_TIME=60;static ENABLE_PRIORITY_MODE=!1;static ENABLE_GLOBAL_PTT=!0;static ENABLE_FULL_DUPLEX=!1;eventEmitter=new t;deltaTime;conversationPttStatusMap=new Map;pttClientImpl;init(){this.pttClientImpl||(this.deltaTime=e.getServerDeltaTime(),this.pttClientImpl=new i(this.eventEmitter),this.pttClientImpl.init(),this.i())}uninit(){this.pttClientImpl&&(this.pttClientImpl.end(),this.pttClientImpl=null)}requestTalk(t,i){if(!i||!this.pttClientImpl||!t)return;if(!u.ENABLE_GLOBAL_PTT&&!this.conversationPttStatusMap.get(this.o(t)))return void i.onRequestFail(t,s.PTT_DISABLED);if(this.pttClientImpl.recordingSession)return void i.onRequestFail(t,s.TALKING);let l=1;u.ENABLE_PRIORITY_MODE||(l=t.type===r.Single?u.SINGLE_CHAT_MAX_SPEAKER_COUNT:u.GROUP_CHAT_MAX_SPEAKER_COUNT);let a=1e3*u.SINGLE_CHAT_MAX_SPEAK_TIME,h=t.type===r.Single?u.SINGLE_CHAT_SEND_VOICE_MESSAGE:u.GROUP_CHAT_SEND_VOICE_MESSAGE;if(t.type===r.Group){a=1e3*u.GROUP_CHAT_MAX_SPEAK_TIME;let r=e.getGroupInfo(t.target,!1);if(!r||r instanceof o)return void i.onRequestFail(t,-1);let m=e.getUserId(),_=e.getGroupMember(t.target,m);if(1===r.mute&&_.type!==n.Owner&&_.type!==n.Manager)return void i.onRequestFail(t,s.GROUP_MUTED);if(_.type===n.Muted)return void i.onRequestFail(t,s.GROUP_MEMBER_MUTED);let f=r.extra;if(f)try{let t=JSON.parse(f);l=!u.ENABLE_PRIORITY_MODE&&t.hasOwnProperty("n")?t.n:1,h=t.hasOwnProperty("s")?t.s:h,a=t.hasOwnProperty("t")?t.t:u.GROUP_CHAT_MAX_SPEAK_TIME,a*=1e3}catch(t){}}let m=this.getTalkingMembers(t);if(1===l)if(1===m)i.onRequestFail(t,s.MAX_SPEAKER);else{let r=i.talkingPriority(t);e.requireLock("WFPTT_"+t.target,5,(()=>{this.pttClientImpl.l(t,a,h,r,i)}),(e=>{i.onRequestFail(t,s.OCCUPIED)}))}else if(0===l||l>m){let e=i.talkingPriority(t);this.pttClientImpl.l(t,a,h,e,i)}else i.onRequestFail(t,s.MAX_SPEAKER)}releaseTalk(t){this.pttClientImpl&&this.pttClientImpl.stopRecord()}getMaxSpeakCount(t){if(t.type===r.Group){let e=this.h(t.target);return e.hasOwnProperty("n")?e.n:u.GROUP_CHAT_MAX_SPEAKER_COUNT}return u.SINGLE_CHAT_MAX_SPEAKER_COUNT}isSendVoiceMessage(t){if(t.type===r.Group){let e=this.h(t.target);return e.hasOwnProperty("s")?e.s:u.GROUP_CHAT_SEND_VOICE_MESSAGE}return u.SINGLE_CHAT_SEND_VOICE_MESSAGE}getMaxSpeakTime(t){if(t.type===r.Group){let e=this.h(t.target);return e.hasOwnProperty("t")?e.t:u.GROUP_CHAT_MAX_SPEAK_TIME}return u.SINGLE_CHAT_MAX}setSendVoiceMessage(t,e,i,s){if(t.type===r.Group){let r=this.h(t.target);r.s=e,this.u(t.target,t.line,r,i,s)}else s&&s(-1)}setConversationMaxSpeakTime(t,e,i,s){if(t.type===r.Group){let r=this.h(t.target);r.t=e,this.u(t.target,t.line,r,i,s)}else s&&s(-1)}setConversationMaxSpeakerCount(t,e,i,s){if(t.type===r.Group){let r=this.h(t.target);r.n=e,this.u(t.target,t.line,r,i,s)}else s&&s(-1)}setConversationPttSilent(t,i,s,r){let n=t.target+"-"+t.type+"-"+t.line;e.setUserSetting(a.PttSilent,n,i?"1":0,s,r),this.pttClientImpl&&this.pttClientImpl.setConversationPttSilent(t,i)}isConversationPttSilent(t){let i=t.target+"-"+t.type+"-"+t.line;return"1"===e.getUserSetting(a.PttSilent,i)}getTalkingConversation(){return this.pttClientImpl.getTalkingConversation()}getTalkingStartTime(){return this.pttClientImpl.getTalkingStartTime()}getTalkingMembers(t){return this.pttClientImpl.getTalkingMembers(t)}getTalkingMemberCount(t){return this.pttClientImpl.getTalkingMembers(t).length}setEnablePtt(t,e){t||this.conversationPttStatusMap.set(this.o(t),e)}o(t){return t.type+"-"+t.target+"-"+t.line}h(t){let i=e.getGroupInfo(t,!1),s={};if(!i||i instanceof o||!i.extra)return s;try{return JSON.parse(i.extra)}catch(t){}return s}u(t,i,s,r,n){s=s||{},e.modifyGroupInfo(t,l.Modify_Group_Extra,JSON.stringify(s),[i],null,r,n)}i(){this.eventEmitter.on(h.userStartTalking,((t,e)=>{})),this.eventEmitter.on(h.userEndTalking,((t,e)=>{})),this.eventEmitter.on(h.receiveData,((t,e,i)=>{})),this.eventEmitter.on(h.userAmplitudeUpdate,((t,e,i)=>{}))}}const m=new u;export{u as PttClient,m as default};