Skip to content

Commit c3d41bd

Browse files
authored
fix: web phone transfer issue in some network env (#323)
1 parent 7910dcc commit c3d41bd

File tree

2 files changed

+47
-1
lines changed

2 files changed

+47
-1
lines changed

src/modules/Phone/index.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ import Softphone from 'ringcentral-integration/modules/Softphone';
4848
import Storage from 'ringcentral-integration/modules/Storage';
4949
import Subscription from 'ringcentral-integration/modules/Subscription';
5050
import TabManager from 'ringcentral-integration/modules/TabManager';
51-
import Webphone from 'ringcentral-integration/modules/Webphone';
51+
// import Webphone from 'ringcentral-integration/modules/Webphone';
5252
import ContactDetails from 'ringcentral-integration/modules/ContactDetails';
5353
import Feedback from 'ringcentral-integration/modules/Feedback';
5454
import Conference from 'ringcentral-integration/modules/Conference';
@@ -106,6 +106,7 @@ import ActiveCalls from '../ActiveCalls';
106106
import CallingSettings from '../CallingSettings';
107107
import CallLog from '../CallLog';
108108
import MeetingInviteModalUI from '../MeetingInviteModalUI';
109+
import Webphone from '../Webphone';
109110

110111
import searchContactPhoneNumbers from '../../lib/searchContactPhoneNumbers';
111112
import hackSend from '../../lib/hackSend';

src/modules/Webphone/index.js

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
import Webphone from 'ringcentral-integration/modules/Webphone';
2+
import webphoneErrors from 'ringcentral-integration/modules/Webphone/webphoneErrors';
3+
import validateNumbers from 'ringcentral-integration/lib/validateNumbers';
4+
import { Module } from 'ringcentral-integration/lib/di';
5+
import sleep from 'ringcentral-integration/lib/sleep';
6+
7+
@Module({
8+
name: 'NewWebphone',
9+
deps: []
10+
})
11+
export default class NewWebphone extends Webphone {
12+
// TODO: remove this after widgets lib fix transfer issue
13+
async transfer(transferNumber, sessionId) {
14+
const session = this._sessions.get(sessionId);
15+
if (!session) {
16+
return;
17+
}
18+
try {
19+
session.__rc_isOnTransfer = true;
20+
this._updateSessions();
21+
let numberResult;
22+
let validPhoneNumber;
23+
numberResult = validateNumbers(
24+
[transferNumber],
25+
this._regionSettings,
26+
this._brand.id,
27+
);
28+
validPhoneNumber = numberResult && numberResult[0];
29+
// TODO use session.transfer after web phone sdk fix this issue
30+
await this.hold(sessionId);
31+
await sleep(1500);
32+
await session.blindTransfer(validPhoneNumber);
33+
session.__rc_isOnTransfer = false;
34+
this._updateSessions();
35+
this._onCallEnd(session);
36+
} catch (e) {
37+
console.error(e);
38+
session.__rc_isOnTransfer = false;
39+
this._updateSessions();
40+
this._alert.danger({
41+
message: webphoneErrors.transferError,
42+
});
43+
}
44+
}
45+
}

0 commit comments

Comments
 (0)