cobrowse-sdk-react-native 2.14.0 → 2.16.0
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/.vscode/settings.json +7 -0
- package/android/build.gradle +1 -1
- package/android/src/main/java/io/cobrowse/reactnative/CobrowseIOCommonDelegates.java +3 -3
- package/android/src/main/java/io/cobrowse/reactnative/CobrowseIOModule.java +23 -0
- package/android/src/main/java/io/cobrowse/reactnative/CommonDelegates.java +20 -83
- package/cobrowse-sdk-react-native.podspec +1 -1
- package/ios/RCTCobrowseIO.m +20 -71
- package/js/CBIOBroadcastPickerView.tsx +15 -0
- package/js/CobrowseAccessibilityService.ts +15 -0
- package/js/CobrowseIO.ts +156 -0
- package/js/CobrowseView.tsx +150 -0
- package/js/{Redacted.js → Redacted.tsx} +3 -2
- package/js/Session.ts +128 -0
- package/js/SessionControl.ts +38 -0
- package/js/Unredacted.tsx +106 -0
- package/js/{index.js → index.ts} +1 -0
- package/js/{useSession.js → useSession.ts} +5 -4
- package/lib/commonjs/CBIOBroadcastPickerView.js +15 -0
- package/lib/commonjs/CBIOBroadcastPickerView.js.map +1 -0
- package/lib/commonjs/CobrowseAccessibilityService.js +22 -0
- package/lib/commonjs/CobrowseAccessibilityService.js.map +1 -0
- package/lib/commonjs/CobrowseIO.js +149 -0
- package/lib/commonjs/CobrowseIO.js.map +1 -0
- package/lib/commonjs/CobrowseView.js +146 -0
- package/lib/commonjs/CobrowseView.js.map +1 -0
- package/lib/commonjs/Redacted.js +14 -0
- package/lib/commonjs/Redacted.js.map +1 -0
- package/lib/commonjs/Session.js +100 -0
- package/lib/commonjs/Session.js.map +1 -0
- package/lib/commonjs/SessionControl.js +39 -0
- package/lib/commonjs/SessionControl.js.map +1 -0
- package/lib/commonjs/Unredacted.js +82 -0
- package/lib/commonjs/Unredacted.js.map +1 -0
- package/lib/commonjs/index.js +77 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/useSession.js +35 -0
- package/lib/commonjs/useSession.js.map +1 -0
- package/lib/module/CBIOBroadcastPickerView.js +8 -0
- package/lib/module/CBIOBroadcastPickerView.js.map +1 -0
- package/lib/module/CobrowseAccessibilityService.js +13 -0
- package/lib/module/CobrowseAccessibilityService.js.map +1 -0
- package/lib/module/CobrowseIO.js +141 -0
- package/lib/module/CobrowseIO.js.map +1 -0
- package/lib/module/CobrowseView.js +136 -0
- package/lib/module/CobrowseView.js.map +1 -0
- package/lib/module/Redacted.js +7 -0
- package/lib/module/Redacted.js.map +1 -0
- package/lib/module/Session.js +93 -0
- package/lib/module/Session.js.map +1 -0
- package/lib/module/SessionControl.js +31 -0
- package/lib/module/SessionControl.js.map +1 -0
- package/lib/module/Unredacted.js +71 -0
- package/lib/module/Unredacted.js.map +1 -0
- package/lib/module/index.js +9 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/useSession.js +28 -0
- package/lib/module/useSession.js.map +1 -0
- package/lib/typescript/CBIOBroadcastPickerView.d.ts +8 -0
- package/lib/typescript/CBIOBroadcastPickerView.d.ts.map +1 -0
- package/lib/typescript/CobrowseAccessibilityService.d.ts +8 -0
- package/lib/typescript/CobrowseAccessibilityService.d.ts.map +1 -0
- package/lib/typescript/CobrowseIO.d.ts +30 -0
- package/lib/typescript/CobrowseIO.d.ts.map +1 -0
- package/lib/typescript/CobrowseView.d.ts +25 -0
- package/lib/typescript/CobrowseView.d.ts.map +1 -0
- package/lib/typescript/Redacted.d.ts +4 -0
- package/lib/typescript/Redacted.d.ts.map +1 -0
- package/lib/typescript/Session.d.ts +42 -0
- package/lib/typescript/Session.d.ts.map +1 -0
- package/lib/typescript/SessionControl.d.ts +17 -0
- package/lib/typescript/SessionControl.d.ts.map +1 -0
- package/lib/typescript/Unredacted.d.ts +10 -0
- package/lib/typescript/Unredacted.d.ts.map +1 -0
- package/lib/typescript/index.d.ts +10 -0
- package/lib/typescript/index.d.ts.map +1 -0
- package/lib/typescript/useSession.d.ts +3 -0
- package/lib/typescript/useSession.d.ts.map +1 -0
- package/package.json +35 -7
- package/tsconfig.build.json +5 -0
- package/tsconfig.json +28 -0
- package/js/CBIOBroadcastPickerView.js +0 -11
- package/js/CobrowseAccessibilityService.js +0 -11
- package/js/CobrowseIO.js +0 -141
- package/js/CobrowseView.js +0 -129
- package/js/Session.js +0 -107
- package/js/SessionControl.js +0 -26
- package/js/Unredacted.js +0 -82
- package/ts/CBIOBroadcastPickerView.d.ts +0 -8
- package/ts/CobrowseAccessibilityService.d.ts +0 -6
- package/ts/CobrowseIO.d.ts +0 -29
- package/ts/CobrowseView.d.ts +0 -20
- package/ts/Redacted.d.ts +0 -8
- package/ts/Session.d.ts +0 -58
- package/ts/SessionControl.d.ts +0 -9
- package/ts/Unredacted.d.ts +0 -15
- package/ts/index.d.ts +0 -7
- package/ts/useSession.d.ts +0 -3
package/js/Session.ts
ADDED
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { EmitterSubscription, NativeEventEmitter, NativeModules } from 'react-native'
|
|
2
|
+
const CobrowseIONative = NativeModules.CobrowseIO
|
|
3
|
+
|
|
4
|
+
const emitter = new NativeEventEmitter(CobrowseIONative)
|
|
5
|
+
|
|
6
|
+
export type SessionEvent = 'updated' | 'ended'
|
|
7
|
+
export type CobrowseSessionEvents = `session.${SessionEvent}`
|
|
8
|
+
export type SessionState = 'active' | 'authorizing' | 'ended' | 'pending'
|
|
9
|
+
export type RemoteControlState = 'on' | 'requested' | 'rejected' | 'off'
|
|
10
|
+
export type FullDeviceState = 'on' | 'requested' | 'rejected' | 'off'
|
|
11
|
+
|
|
12
|
+
export interface Agent {
|
|
13
|
+
id: string
|
|
14
|
+
name: string
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export interface SessionLike {
|
|
18
|
+
id: string
|
|
19
|
+
code: string
|
|
20
|
+
state: SessionState
|
|
21
|
+
full_device: boolean
|
|
22
|
+
remote_control: RemoteControlState
|
|
23
|
+
agent: Agent
|
|
24
|
+
full_device_state: FullDeviceState
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export default class Session {
|
|
28
|
+
constructor (private session: SessionLike | Record<string, never> = {}) {
|
|
29
|
+
this._listen()
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
private _update (session: SessionLike, onMatch?: () => void): void {
|
|
33
|
+
if (this.session.id === undefined || (session != null && this.session.id === session.id)) {
|
|
34
|
+
this.session = session
|
|
35
|
+
if (typeof onMatch === 'function') onMatch()
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
_listen (): void {
|
|
40
|
+
const updates = emitter.addListener('session.updated', (session: SessionLike) => this._update(session))
|
|
41
|
+
const ended = emitter.addListener('session.ended', (session: SessionLike) => {
|
|
42
|
+
this._update(session, () => {
|
|
43
|
+
updates.remove()
|
|
44
|
+
ended.remove()
|
|
45
|
+
})
|
|
46
|
+
})
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
addListener (eventType: SessionEvent, listener: (session: Session) => void): EmitterSubscription {
|
|
50
|
+
let mappedEventsType: CobrowseSessionEvents
|
|
51
|
+
// TODO: this class should extend EventEmitter and forward
|
|
52
|
+
// on the non-namespaced versions of these events
|
|
53
|
+
switch (eventType) {
|
|
54
|
+
case 'ended':
|
|
55
|
+
mappedEventsType = 'session.updated'
|
|
56
|
+
break
|
|
57
|
+
case 'updated':
|
|
58
|
+
mappedEventsType = 'session.ended'
|
|
59
|
+
break
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
return emitter.addListener(mappedEventsType ?? eventType, (session: SessionLike) => {
|
|
63
|
+
this._update(session, () => {
|
|
64
|
+
listener(this)
|
|
65
|
+
})
|
|
66
|
+
})
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
get id (): string | null {
|
|
70
|
+
return this.session.id
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
get code (): string | null {
|
|
74
|
+
return this.session.code
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
get state (): SessionState | null {
|
|
78
|
+
return this.session.state
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
get full_device (): boolean {
|
|
82
|
+
return this.session.full_device ?? false
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
get full_device_state (): FullDeviceState {
|
|
86
|
+
return this.session.full_device_state ?? 'off'
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
get remote_control (): RemoteControlState | null {
|
|
90
|
+
return this.session.remote_control
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
get agent (): Agent | null {
|
|
94
|
+
return this.session.agent
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
async activate (): Promise<void> {
|
|
98
|
+
return CobrowseIONative.activateSession().then(() => {})
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
async end (): Promise<void> {
|
|
102
|
+
return CobrowseIONative.endSession()
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
isActive (): boolean {
|
|
106
|
+
return this.session.state === 'active'
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
isAuthorizing (): boolean {
|
|
110
|
+
return this.session.state === 'authorizing'
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
isPending (): boolean {
|
|
114
|
+
return this.session.state === 'pending'
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
isEnded (): boolean {
|
|
118
|
+
return this.session.state === 'ended'
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
async setFullDevice (state: boolean | FullDeviceState): Promise<void> {
|
|
122
|
+
return CobrowseIONative.updateSession({ full_device: state })
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
async setRemoteControl (state: RemoteControlState): Promise<void> {
|
|
126
|
+
return CobrowseIONative.updateSession({ remote_control: state })
|
|
127
|
+
}
|
|
128
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import React, { Component } from 'react'
|
|
2
|
+
import CobrowseIO from './CobrowseIO'
|
|
3
|
+
import type { EmitterSubscription } from 'react-native'
|
|
4
|
+
import type Session from './Session'
|
|
5
|
+
|
|
6
|
+
interface SessionControlProps {
|
|
7
|
+
children: React.ReactNode
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
interface SessionControlState {
|
|
11
|
+
session: Session | null
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export default class SessionControl extends Component<SessionControlProps, SessionControlState> {
|
|
15
|
+
private _updateListener: EmitterSubscription | null = null
|
|
16
|
+
|
|
17
|
+
constructor (props: SessionControlProps) {
|
|
18
|
+
super(props)
|
|
19
|
+
this.state = { session: null }
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
async componentDidMount (): Promise<void> {
|
|
23
|
+
this.setState({ session: await CobrowseIO.currentSession() })
|
|
24
|
+
this._updateListener = CobrowseIO.addListener(CobrowseIO.SESSION_UPDATED, (session) => {
|
|
25
|
+
this.setState({ session })
|
|
26
|
+
})
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
componentWillUnmount (): void {
|
|
30
|
+
if (this._updateListener != null) this._updateListener.remove()
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
render (): React.ReactNode | null {
|
|
34
|
+
const { session } = this.state
|
|
35
|
+
if (session?.isActive() === true) return this.props.children
|
|
36
|
+
else return null
|
|
37
|
+
}
|
|
38
|
+
}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import React, {
|
|
2
|
+
forwardRef,
|
|
3
|
+
useMemo,
|
|
4
|
+
useRef,
|
|
5
|
+
useCallback,
|
|
6
|
+
useEffect,
|
|
7
|
+
Component as ReactComponentType,
|
|
8
|
+
PropsWithoutRef,
|
|
9
|
+
type ForwardRefExoticComponent,
|
|
10
|
+
type RefAttributes,
|
|
11
|
+
type ComponentClass,
|
|
12
|
+
type Ref,
|
|
13
|
+
type PropsWithChildren,
|
|
14
|
+
type ForwardedRef
|
|
15
|
+
} from 'react'
|
|
16
|
+
import { ScrollView, Text, View, SectionList, FlatList, Image, findNodeHandle, NativeModules } from 'react-native'
|
|
17
|
+
import { throttle } from 'lodash'
|
|
18
|
+
|
|
19
|
+
const CobrowseIONative = NativeModules.CobrowseIO
|
|
20
|
+
|
|
21
|
+
type RefHandlingComponent<T, P> =
|
|
22
|
+
| ComponentClass<P & { ref?: Ref<T> }, any>
|
|
23
|
+
| ForwardRefExoticComponent<PropsWithChildren<P> & RefAttributes<T>>
|
|
24
|
+
|
|
25
|
+
function mergeRefs<T> (refs: Array<ForwardedRef<T>>): Ref<T> {
|
|
26
|
+
return (value) => {
|
|
27
|
+
refs.forEach((ref) => {
|
|
28
|
+
if (typeof ref === 'function') {
|
|
29
|
+
ref(value)
|
|
30
|
+
} else if (ref != null) {
|
|
31
|
+
ref.current = value
|
|
32
|
+
}
|
|
33
|
+
})
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
const unredactedTags = new Set()
|
|
38
|
+
const sendUnredactionUpdates = throttle(() => {
|
|
39
|
+
CobrowseIONative.setUnredactedTags([...unredactedTags])
|
|
40
|
+
}, 50, { leading: false })
|
|
41
|
+
|
|
42
|
+
function removeUnredactedView (view: number | null): void {
|
|
43
|
+
if (view != null) {
|
|
44
|
+
unredactedTags.delete(view)
|
|
45
|
+
sendUnredactionUpdates()
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export function useUnredaction<C extends ComponentClass | ReactComponentType = View | ScrollView | Text | Image | FlatList | SectionList> (shouldWarnUnhandledRefs = true, componentName = ''): ForwardedRef<C> {
|
|
50
|
+
const ref = useRef<number | null>(null)
|
|
51
|
+
|
|
52
|
+
const setRef = useCallback((node: C | null) => {
|
|
53
|
+
let hasRemovedRef = false
|
|
54
|
+
if (ref.current != null) {
|
|
55
|
+
hasRemovedRef = true
|
|
56
|
+
removeUnredactedView(ref.current)
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
if (node != null) {
|
|
60
|
+
const view = findNodeHandle(node)
|
|
61
|
+
|
|
62
|
+
if (view != null) {
|
|
63
|
+
unredactedTags.add(view)
|
|
64
|
+
sendUnredactionUpdates()
|
|
65
|
+
|
|
66
|
+
ref.current = view
|
|
67
|
+
} else {
|
|
68
|
+
console.warn(`Failed to apply unredact() to ${componentName} due to view not found`)
|
|
69
|
+
}
|
|
70
|
+
} else if (!hasRemovedRef) {
|
|
71
|
+
console.warn(
|
|
72
|
+
`Failed to apply unredact() to ${componentName} due to null node handle – make sure you are forwarding refs`
|
|
73
|
+
)
|
|
74
|
+
}
|
|
75
|
+
}, [])
|
|
76
|
+
|
|
77
|
+
useEffect(() => {
|
|
78
|
+
if (shouldWarnUnhandledRefs && ref.current == null) {
|
|
79
|
+
console.warn(
|
|
80
|
+
`Failed to apply unredact() to ${componentName} due to null node handle – make sure the setRef function is called with the ref`
|
|
81
|
+
)
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
return () => removeUnredactedView(ref.current)
|
|
85
|
+
}, [])
|
|
86
|
+
|
|
87
|
+
return setRef
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
export function unredact<T, P extends {}> (
|
|
91
|
+
Component: RefHandlingComponent<T, P>
|
|
92
|
+
): ForwardRefExoticComponent<PropsWithoutRef<P> & RefAttributes<T>> {
|
|
93
|
+
return forwardRef<T, P>(
|
|
94
|
+
function ComponentFromHOC (props, ref) {
|
|
95
|
+
const localRef = useUnredaction(true, Component?.displayName) as ForwardedRef<T>
|
|
96
|
+
const refs = useMemo(() => mergeRefs([localRef, ref]), [localRef, ref])
|
|
97
|
+
|
|
98
|
+
return (
|
|
99
|
+
<Component {...(props)} ref={refs} />
|
|
100
|
+
)
|
|
101
|
+
}
|
|
102
|
+
)
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
const Unredacted = unredact(View)
|
|
106
|
+
export default Unredacted
|
package/js/{index.js → index.ts}
RENAMED
|
@@ -6,3 +6,4 @@ export { default as SessionControl } from './SessionControl'
|
|
|
6
6
|
export { default as CobrowseAccessibilityService } from './CobrowseAccessibilityService'
|
|
7
7
|
export { default as CBIOBroadcastPickerView } from './CBIOBroadcastPickerView'
|
|
8
8
|
export { useSession } from './useSession'
|
|
9
|
+
export type { default as Session, CobrowseSessionEvents } from './Session'
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import { useEffect, useState } from 'react'
|
|
2
2
|
import CobrowseIO from './CobrowseIO'
|
|
3
|
+
import type Session from './Session'
|
|
3
4
|
|
|
4
|
-
export function useSession () {
|
|
5
|
-
const [session, setSession] = useState(null)
|
|
5
|
+
export function useSession (): Session | null {
|
|
6
|
+
const [session, setSession] = useState<Session | null>(null)
|
|
6
7
|
|
|
7
8
|
// initial value
|
|
8
9
|
useEffect(() => {
|
|
9
10
|
let isMounted = true
|
|
10
|
-
|
|
11
|
+
async function getSession (): Promise<void> {
|
|
11
12
|
const session = await CobrowseIO.currentSession()
|
|
12
13
|
|
|
13
14
|
if (isMounted) {
|
|
@@ -15,7 +16,7 @@ export function useSession () {
|
|
|
15
16
|
}
|
|
16
17
|
}
|
|
17
18
|
|
|
18
|
-
getSession()
|
|
19
|
+
void getSession()
|
|
19
20
|
|
|
20
21
|
return () => {
|
|
21
22
|
isMounted = false
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = CBIOBroadcastPickerView;
|
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
|
8
|
+
var _reactNative = require("react-native");
|
|
9
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
10
|
+
const CBIOBroadcastPickerViewNativeView = (0, _reactNative.requireNativeComponent)('CBIOBroadcastPickerView');
|
|
11
|
+
function CBIOBroadcastPickerView(props) {
|
|
12
|
+
// this native component is only available on iOS
|
|
13
|
+
return _reactNative.Platform.OS === 'ios' ? /*#__PURE__*/_react.default.createElement(CBIOBroadcastPickerViewNativeView, props) : null;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=CBIOBroadcastPickerView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","obj","__esModule","default","CBIOBroadcastPickerViewNativeView","requireNativeComponent","CBIOBroadcastPickerView","props","Platform","OS","createElement"],"sourceRoot":"../../js","sources":["CBIOBroadcastPickerView.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAA+E,SAAAD,uBAAAG,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAE/E,MAAMG,iCAAiC,GAAG,IAAAC,mCAAsB,EAC9D,yBACF,CAAC;AAMc,SAASC,uBAAuBA,CAAEC,KAAmC,EAAsB;EACxG;EACA,OAAOC,qBAAQ,CAACC,EAAE,KAAK,KAAK,gBAAGZ,MAAA,CAAAM,OAAA,CAAAO,aAAA,CAACN,iCAAiC,EAAKG,KAAQ,CAAC,GAAG,IAAI;AACxF"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
exports.isRunning = isRunning;
|
|
8
|
+
exports.showSetup = showSetup;
|
|
9
|
+
var _reactNative = require("react-native");
|
|
10
|
+
const CobrowseIONative = _reactNative.NativeModules.CobrowseIO;
|
|
11
|
+
function showSetup() {
|
|
12
|
+
return CobrowseIONative.accessibilityServiceShowSetup();
|
|
13
|
+
}
|
|
14
|
+
function isRunning() {
|
|
15
|
+
return CobrowseIONative.accessibilityServiceIsRunning();
|
|
16
|
+
}
|
|
17
|
+
var _default = {
|
|
18
|
+
showSetup,
|
|
19
|
+
isRunning
|
|
20
|
+
};
|
|
21
|
+
exports.default = _default;
|
|
22
|
+
//# sourceMappingURL=CobrowseAccessibilityService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_reactNative","require","CobrowseIONative","NativeModules","CobrowseIO","showSetup","accessibilityServiceShowSetup","isRunning","accessibilityServiceIsRunning","_default","exports","default"],"sourceRoot":"../../js","sources":["CobrowseAccessibilityService.ts"],"mappings":";;;;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,MAAMC,gBAAgB,GAAGC,0BAAa,CAACC,UAAU;AAE1C,SAASC,SAASA,CAAA,EAAU;EACjC,OAAOH,gBAAgB,CAACI,6BAA6B,CAAC,CAAC;AACzD;AAEO,SAASC,SAASA,CAAA,EAAa;EACpC,OAAOL,gBAAgB,CAACM,6BAA6B,CAAC,CAAC;AACzD;AAAC,IAAAC,QAAA,GAEc;EACbJ,SAAS;EACTE;AACF,CAAC;AAAAG,OAAA,CAAAC,OAAA,GAAAF,QAAA"}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _reactNative = require("react-native");
|
|
8
|
+
var _Session = _interopRequireDefault(require("./Session"));
|
|
9
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
10
|
+
const CobrowseIONative = _reactNative.NativeModules.CobrowseIO;
|
|
11
|
+
const emitter = new _reactNative.NativeEventEmitter(CobrowseIONative);
|
|
12
|
+
|
|
13
|
+
// eslint-disable-next-line @typescript-eslint/no-extraneous-class
|
|
14
|
+
class CobrowseIO {
|
|
15
|
+
static sessionRequestShown = false;
|
|
16
|
+
static remoteControlRequestShown = false;
|
|
17
|
+
|
|
18
|
+
/** @deprecated */
|
|
19
|
+
static get SESSION_UPDATED() {
|
|
20
|
+
return 'session.updated';
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/** @deprecated */
|
|
24
|
+
static get SESSION_ENDED() {
|
|
25
|
+
return 'session.ended';
|
|
26
|
+
}
|
|
27
|
+
static handleSessionRequest(session) {
|
|
28
|
+
if (this.sessionRequestShown) return;
|
|
29
|
+
this.sessionRequestShown = true;
|
|
30
|
+
_reactNative.Alert.alert('Support Request', 'A support agent would like to use this app with you. Do you accept?', [{
|
|
31
|
+
text: 'Reject',
|
|
32
|
+
onPress: () => {
|
|
33
|
+
this.sessionRequestShown = false;
|
|
34
|
+
void session.end();
|
|
35
|
+
},
|
|
36
|
+
style: 'cancel'
|
|
37
|
+
}, {
|
|
38
|
+
text: 'Accept',
|
|
39
|
+
onPress: () => {
|
|
40
|
+
this.sessionRequestShown = false;
|
|
41
|
+
void session.activate();
|
|
42
|
+
}
|
|
43
|
+
}], {
|
|
44
|
+
cancelable: false
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
static handleRemoteControlRequest(session) {
|
|
48
|
+
if (this.remoteControlRequestShown) return;
|
|
49
|
+
this.remoteControlRequestShown = true;
|
|
50
|
+
_reactNative.Alert.alert('Remote Control Request', 'A support agent would like to take remote control of this app. Do you accept?', [{
|
|
51
|
+
text: 'Reject',
|
|
52
|
+
onPress: () => {
|
|
53
|
+
this.remoteControlRequestShown = false;
|
|
54
|
+
void session.setRemoteControl('rejected');
|
|
55
|
+
},
|
|
56
|
+
style: 'cancel'
|
|
57
|
+
}, {
|
|
58
|
+
text: 'Accept',
|
|
59
|
+
onPress: () => {
|
|
60
|
+
this.remoteControlRequestShown = false;
|
|
61
|
+
void session.setRemoteControl('on');
|
|
62
|
+
}
|
|
63
|
+
}], {
|
|
64
|
+
cancelable: false
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
static addListener(event, cb) {
|
|
68
|
+
return emitter.addListener(event, session => cb(new _Session.default(session)));
|
|
69
|
+
}
|
|
70
|
+
static start() {
|
|
71
|
+
CobrowseIONative.start();
|
|
72
|
+
}
|
|
73
|
+
static stop() {
|
|
74
|
+
CobrowseIONative.stop();
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
// eslint-disable-next-line accessor-pairs
|
|
78
|
+
static set api(api) {
|
|
79
|
+
CobrowseIONative.api(api);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// eslint-disable-next-line accessor-pairs
|
|
83
|
+
static set license(license) {
|
|
84
|
+
CobrowseIONative.license(license);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
// eslint-disable-next-line accessor-pairs
|
|
88
|
+
static set customData(customData) {
|
|
89
|
+
CobrowseIONative.customData(customData);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
// eslint-disable-next-line accessor-pairs
|
|
93
|
+
static set capabilities(capabilities) {
|
|
94
|
+
CobrowseIONative.capabilities(capabilities);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
// eslint-disable-next-line accessor-pairs
|
|
98
|
+
static set deviceToken(token) {
|
|
99
|
+
CobrowseIONative.deviceToken(token);
|
|
100
|
+
}
|
|
101
|
+
static currentSession() {
|
|
102
|
+
return CobrowseIONative.currentSession().then(session => session != null ? new _Session.default(session) : null);
|
|
103
|
+
}
|
|
104
|
+
static createSession() {
|
|
105
|
+
return CobrowseIONative.createSession().then(session => session != null ? new _Session.default(session) : null);
|
|
106
|
+
}
|
|
107
|
+
static getSession(codeOrId) {
|
|
108
|
+
return CobrowseIONative.getSession(codeOrId).then(session => session != null ? new _Session.default(session) : null);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/** @deprecated */
|
|
112
|
+
static activateSession() {
|
|
113
|
+
return CobrowseIONative.activateSession().then(session => session != null ? new _Session.default(session) : null);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/** @deprecated */
|
|
117
|
+
static endSession() {
|
|
118
|
+
return CobrowseIONative.endSession();
|
|
119
|
+
}
|
|
120
|
+
static showSessionControls = null;
|
|
121
|
+
static handleFullDeviceRequest = null;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
// the session.requested event is considered internal, it should
|
|
125
|
+
// not be used outside these bindings
|
|
126
|
+
exports.default = CobrowseIO;
|
|
127
|
+
CobrowseIO.addListener('session.requested', session => {
|
|
128
|
+
if (CobrowseIO.showSessionControls === false) {
|
|
129
|
+
CobrowseIONative.overwriteSessionIndicator();
|
|
130
|
+
}
|
|
131
|
+
if (_reactNative.Platform.OS === 'ios' && CobrowseIO.handleFullDeviceRequest != null) {
|
|
132
|
+
CobrowseIONative.overwriteFullControlUI();
|
|
133
|
+
}
|
|
134
|
+
CobrowseIO.handleSessionRequest(session);
|
|
135
|
+
});
|
|
136
|
+
CobrowseIO.addListener('session.updated', session => {
|
|
137
|
+
if (session.isActive() && session.remote_control === 'requested') {
|
|
138
|
+
CobrowseIO.handleRemoteControlRequest(session);
|
|
139
|
+
}
|
|
140
|
+
if (session.isActive() && session.full_device_state === 'requested') {
|
|
141
|
+
if (CobrowseIO.handleFullDeviceRequest != null) {
|
|
142
|
+
CobrowseIO.handleFullDeviceRequest(session);
|
|
143
|
+
} else if (_reactNative.Platform.OS === 'android') {
|
|
144
|
+
// accept the incoming connection by default
|
|
145
|
+
void session.setFullDevice('on');
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
});
|
|
149
|
+
//# sourceMappingURL=CobrowseIO.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_Session","_interopRequireDefault","obj","__esModule","default","CobrowseIONative","NativeModules","CobrowseIO","emitter","NativeEventEmitter","sessionRequestShown","remoteControlRequestShown","SESSION_UPDATED","SESSION_ENDED","handleSessionRequest","session","Alert","alert","text","onPress","end","style","activate","cancelable","handleRemoteControlRequest","setRemoteControl","addListener","event","cb","Session","start","stop","api","license","customData","capabilities","deviceToken","token","currentSession","then","createSession","getSession","codeOrId","activateSession","endSession","showSessionControls","handleFullDeviceRequest","exports","overwriteSessionIndicator","Platform","OS","overwriteFullControlUI","isActive","remote_control","full_device_state","setFullDevice"],"sourceRoot":"../../js","sources":["CobrowseIO.ts"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAC,sBAAA,CAAAF,OAAA;AAAiF,SAAAE,uBAAAC,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AACjF,MAAMG,gBAAgB,GAAGC,0BAAa,CAACC,UAAU;AAEjD,MAAMC,OAAO,GAAG,IAAIC,+BAAkB,CAACJ,gBAAgB,CAAC;;AAExD;AACe,MAAME,UAAU,CAAC;EAC9B,OAAeG,mBAAmB,GAAG,KAAK;EAC1C,OAAeC,yBAAyB,GAAG,KAAK;;EAEhD;EACA,WAAWC,eAAeA,CAAA,EAAuB;IAC/C,OAAO,iBAAiB;EAC1B;;EAEA;EACA,WAAWC,aAAaA,CAAA,EAAqB;IAC3C,OAAO,eAAe;EACxB;EAEA,OAAOC,oBAAoBA,CAAEC,OAAgB,EAAQ;IACnD,IAAI,IAAI,CAACL,mBAAmB,EAAE;IAC9B,IAAI,CAACA,mBAAmB,GAAG,IAAI;IAC/BM,kBAAK,CAACC,KAAK,CACT,iBAAiB,EACjB,qEAAqE,EACrE,CAAC;MACCC,IAAI,EAAE,QAAQ;MACdC,OAAO,EAAEA,CAAA,KAAM;QACb,IAAI,CAACT,mBAAmB,GAAG,KAAK;QAChC,KAAKK,OAAO,CAACK,GAAG,CAAC,CAAC;MACpB,CAAC;MACDC,KAAK,EAAE;IACT,CAAC,EAAE;MACDH,IAAI,EAAE,QAAQ;MACdC,OAAO,EAAEA,CAAA,KAAM;QACb,IAAI,CAACT,mBAAmB,GAAG,KAAK;QAChC,KAAKK,OAAO,CAACO,QAAQ,CAAC,CAAC;MACzB;IACF,CAAC,CAAC,EAAE;MAAEC,UAAU,EAAE;IAAM,CAAC,CAAC;EAC9B;EAEA,OAAOC,0BAA0BA,CAAET,OAAgB,EAAQ;IACzD,IAAI,IAAI,CAACJ,yBAAyB,EAAE;IACpC,IAAI,CAACA,yBAAyB,GAAG,IAAI;IACrCK,kBAAK,CAACC,KAAK,CACT,wBAAwB,EACxB,+EAA+E,EAC/E,CAAC;MACCC,IAAI,EAAE,QAAQ;MACdC,OAAO,EAAEA,CAAA,KAAM;QACb,IAAI,CAACR,yBAAyB,GAAG,KAAK;QACtC,KAAKI,OAAO,CAACU,gBAAgB,CAAC,UAAU,CAAC;MAC3C,CAAC;MACDJ,KAAK,EAAE;IACT,CAAC,EAAE;MACDH,IAAI,EAAE,QAAQ;MACdC,OAAO,EAAEA,CAAA,KAAM;QACb,IAAI,CAACR,yBAAyB,GAAG,KAAK;QACtC,KAAKI,OAAO,CAACU,gBAAgB,CAAC,IAAI,CAAC;MACrC;IACF,CAAC,CAAC,EAAE;MAAEF,UAAU,EAAE;IAAM,CAAC,CAAC;EAC9B;EAEA,OAAOG,WAAWA,CAAEC,KAAkD,EAAEC,EAA8B,EAAuB;IAC3H,OAAOpB,OAAO,CAACkB,WAAW,CAACC,KAAK,EAAGZ,OAAoB,IAAKa,EAAE,CAAC,IAAIC,gBAAO,CAACd,OAAO,CAAC,CAAC,CAAC;EACvF;EAEA,OAAOe,KAAKA,CAAA,EAAU;IACpBzB,gBAAgB,CAACyB,KAAK,CAAC,CAAC;EAC1B;EAEA,OAAOC,IAAIA,CAAA,EAAU;IACnB1B,gBAAgB,CAAC0B,IAAI,CAAC,CAAC;EACzB;;EAEA;EACA,WAAWC,GAAGA,CAAEA,GAAW,EAAE;IAC3B3B,gBAAgB,CAAC2B,GAAG,CAACA,GAAG,CAAC;EAC3B;;EAEA;EACA,WAAWC,OAAOA,CAAEA,OAAe,EAAE;IACnC5B,gBAAgB,CAAC4B,OAAO,CAACA,OAAO,CAAC;EACnC;;EAEA;EACA,WAAWC,UAAUA,CAAEA,UAAmC,EAAE;IAC1D7B,gBAAgB,CAAC6B,UAAU,CAACA,UAAU,CAAC;EACzC;;EAEA;EACA,WAAWC,YAAYA,CAAEA,YAAiF,EAAE;IAC1G9B,gBAAgB,CAAC8B,YAAY,CAACA,YAAY,CAAC;EAC7C;;EAEA;EACA,WAAWC,WAAWA,CAAEC,KAAa,EAAE;IACrChC,gBAAgB,CAAC+B,WAAW,CAACC,KAAK,CAAC;EACrC;EAEA,OAAOC,cAAcA,CAAA,EAAoB;IACvC,OAAOjC,gBAAgB,CAACiC,cAAc,CAAC,CAAC,CAACC,IAAI,CAAExB,OAA2B,IAAMA,OAAO,IAAI,IAAI,GAAI,IAAIc,gBAAO,CAACd,OAAO,CAAC,GAAG,IAAI,CAAC;EACjI;EAEA,OAAOyB,aAAaA,CAAA,EAAoB;IACtC,OAAOnC,gBAAgB,CAACmC,aAAa,CAAC,CAAC,CAACD,IAAI,CAAExB,OAA2B,IAAMA,OAAO,IAAI,IAAI,GAAI,IAAIc,gBAAO,CAACd,OAAO,CAAC,GAAG,IAAI,CAAC;EAChI;EAEA,OAAO0B,UAAUA,CAAEC,QAAgB,EAAkB;IACnD,OAAOrC,gBAAgB,CAACoC,UAAU,CAACC,QAAQ,CAAC,CAACH,IAAI,CAAExB,OAA2B,IAAMA,OAAO,IAAI,IAAI,GAAI,IAAIc,gBAAO,CAACd,OAAO,CAAC,GAAG,IAAI,CAAC;EACrI;;EAEA;EACA,OAAO4B,eAAeA,CAAA,EAAoB;IACxC,OAAOtC,gBAAgB,CAACsC,eAAe,CAAC,CAAC,CAACJ,IAAI,CAAExB,OAA2B,IAAMA,OAAO,IAAI,IAAI,GAAI,IAAIc,gBAAO,CAACd,OAAO,CAAC,GAAG,IAAI,CAAC;EAClI;;EAEA;EACA,OAAO6B,UAAUA,CAAA,EAAU;IACzB,OAAOvC,gBAAgB,CAACuC,UAAU,CAAC,CAAC;EACtC;EAEA,OAAOC,mBAAmB,GAAmB,IAAI;EACjD,OAAOC,uBAAuB,GAAkC,IAAI;AACtE;;AAEA;AACA;AAAAC,OAAA,CAAA3C,OAAA,GAAAG,UAAA;AACAA,UAAU,CAACmB,WAAW,CAAC,mBAAmB,EAAGX,OAAO,IAAK;EACvD,IAAIR,UAAU,CAACsC,mBAAmB,KAAK,KAAK,EAAE;IAC5CxC,gBAAgB,CAAC2C,yBAAyB,CAAC,CAAC;EAC9C;EAEA,IAAIC,qBAAQ,CAACC,EAAE,KAAK,KAAK,IAAK3C,UAAU,CAACuC,uBAAuB,IAAI,IAAK,EAAE;IACzEzC,gBAAgB,CAAC8C,sBAAsB,CAAC,CAAC;EAC3C;EAEA5C,UAAU,CAACO,oBAAoB,CAACC,OAAO,CAAC;AAC1C,CAAC,CAAC;AAEFR,UAAU,CAACmB,WAAW,CAAC,iBAAiB,EAAGX,OAAO,IAAK;EACrD,IAAIA,OAAO,CAACqC,QAAQ,CAAC,CAAC,IAAIrC,OAAO,CAACsC,cAAc,KAAK,WAAW,EAAE;IAChE9C,UAAU,CAACiB,0BAA0B,CAACT,OAAO,CAAC;EAChD;EAEA,IAAIA,OAAO,CAACqC,QAAQ,CAAC,CAAC,IAAIrC,OAAO,CAACuC,iBAAiB,KAAK,WAAW,EAAE;IACnE,IAAI/C,UAAU,CAACuC,uBAAuB,IAAI,IAAI,EAAE;MAC9CvC,UAAU,CAACuC,uBAAuB,CAAC/B,OAAO,CAAC;IAC7C,CAAC,MAAM,IAAIkC,qBAAQ,CAACC,EAAE,KAAK,SAAS,EAAE;MACpC;MACA,KAAKnC,OAAO,CAACwC,aAAa,CAAC,IAAI,CAAC;IAClC;EACF;AACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
+
var _reactNative = require("react-native");
|
|
9
|
+
var _CobrowseIO = _interopRequireDefault(require("./CobrowseIO"));
|
|
10
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
12
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
13
|
+
const styles = _reactNative.StyleSheet.create({
|
|
14
|
+
container: {
|
|
15
|
+
flex: 1,
|
|
16
|
+
justifyContent: 'flex-end'
|
|
17
|
+
},
|
|
18
|
+
text: {
|
|
19
|
+
textAlign: 'center',
|
|
20
|
+
margin: 15,
|
|
21
|
+
fontSize: 15,
|
|
22
|
+
lineHeight: 20
|
|
23
|
+
},
|
|
24
|
+
code: {
|
|
25
|
+
fontSize: 29,
|
|
26
|
+
padding: 20,
|
|
27
|
+
fontWeight: 'bold',
|
|
28
|
+
textAlign: 'center'
|
|
29
|
+
},
|
|
30
|
+
button: {
|
|
31
|
+
color: 'rgb(0, 122, 255)',
|
|
32
|
+
fontSize: 18,
|
|
33
|
+
margin: 10
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
class CobrowseView extends _react.Component {
|
|
37
|
+
_updateListener = null;
|
|
38
|
+
_endListener = null;
|
|
39
|
+
constructor(props) {
|
|
40
|
+
super(props);
|
|
41
|
+
this.state = {
|
|
42
|
+
error: null,
|
|
43
|
+
session: null
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
async componentDidMount() {
|
|
47
|
+
if (this.props.license != null) {
|
|
48
|
+
console.warn('Passing license to view is deprecated. Use CobrowseIO.license = "..." instead');
|
|
49
|
+
_CobrowseIO.default.license = this.props.license;
|
|
50
|
+
}
|
|
51
|
+
try {
|
|
52
|
+
const current = await _CobrowseIO.default.currentSession();
|
|
53
|
+
if (current != null) this.setState({
|
|
54
|
+
session: current
|
|
55
|
+
});else {
|
|
56
|
+
const session = await _CobrowseIO.default.createSession();
|
|
57
|
+
this.setState({
|
|
58
|
+
session
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
} catch (error) {
|
|
62
|
+
this.setState({
|
|
63
|
+
error: error
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
this._updateListener = _CobrowseIO.default.addListener('session.updated', session => {
|
|
67
|
+
this.setState({
|
|
68
|
+
session
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
this._endListener = _CobrowseIO.default.addListener('session.ended', () => {
|
|
72
|
+
if (this.props.onEnded != null) this.props.onEnded();
|
|
73
|
+
this.setState({
|
|
74
|
+
session: null
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
componentWillUnmount() {
|
|
79
|
+
if (this._updateListener != null) this._updateListener.remove();
|
|
80
|
+
if (this._endListener != null) this._endListener.remove();
|
|
81
|
+
}
|
|
82
|
+
async endSession() {
|
|
83
|
+
try {
|
|
84
|
+
const {
|
|
85
|
+
session
|
|
86
|
+
} = this.state;
|
|
87
|
+
if (session == null) {
|
|
88
|
+
throw new Error('No session to end');
|
|
89
|
+
}
|
|
90
|
+
await session.end();
|
|
91
|
+
this.setState({
|
|
92
|
+
session: null
|
|
93
|
+
});
|
|
94
|
+
} catch (error) {
|
|
95
|
+
this.setState({
|
|
96
|
+
error: error
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
renderError(error) {
|
|
101
|
+
return /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
|
|
102
|
+
style: [styles.text]
|
|
103
|
+
}, error.message);
|
|
104
|
+
}
|
|
105
|
+
renderCode() {
|
|
106
|
+
var _this$state$session;
|
|
107
|
+
let code = (_this$state$session = this.state.session) === null || _this$state$session === void 0 ? void 0 : _this$state$session.code;
|
|
108
|
+
if (code != null) code = code.substr(0, 3) + '-' + code.substr(3);
|
|
109
|
+
return /*#__PURE__*/_react.default.createElement(_reactNative.View, null, /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
|
|
110
|
+
style: [styles.code, {
|
|
111
|
+
opacity: code != null ? 1 : 0.2
|
|
112
|
+
}]
|
|
113
|
+
}, code ?? '000-000'), /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
|
|
114
|
+
style: [styles.text]
|
|
115
|
+
}, "Provide this code to your support agent to begin screen sharing."), /*#__PURE__*/_react.default.createElement(_reactNative.ActivityIndicator, null));
|
|
116
|
+
}
|
|
117
|
+
renderManageSession() {
|
|
118
|
+
return /*#__PURE__*/_react.default.createElement(_reactNative.View, null, /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
|
|
119
|
+
style: [styles.text]
|
|
120
|
+
}, "You're sharing screens from this app with a support agent."), /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
|
|
121
|
+
onPress: () => this.endSession
|
|
122
|
+
}, /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
|
|
123
|
+
style: [styles.text, styles.button]
|
|
124
|
+
}, "End Session")));
|
|
125
|
+
}
|
|
126
|
+
renderContent() {
|
|
127
|
+
const {
|
|
128
|
+
error,
|
|
129
|
+
session
|
|
130
|
+
} = this.state;
|
|
131
|
+
if (error != null) {
|
|
132
|
+
return this.renderError(error);
|
|
133
|
+
} else if (session == null || session.state === 'pending' || session.state === 'authorizing') {
|
|
134
|
+
return this.renderCode();
|
|
135
|
+
} else {
|
|
136
|
+
return this.renderManageSession();
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
render() {
|
|
140
|
+
return /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
141
|
+
style: styles.container
|
|
142
|
+
}, this.renderContent());
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
exports.default = CobrowseView;
|
|
146
|
+
//# sourceMappingURL=CobrowseView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_CobrowseIO","_interopRequireDefault","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","styles","StyleSheet","create","container","flex","justifyContent","text","textAlign","margin","fontSize","lineHeight","code","padding","fontWeight","button","color","CobrowseView","Component","_updateListener","_endListener","constructor","props","state","error","session","componentDidMount","license","console","warn","CobrowseIO","current","currentSession","setState","createSession","addListener","onEnded","componentWillUnmount","remove","endSession","Error","end","renderError","createElement","Text","style","message","renderCode","_this$state$session","substr","View","opacity","ActivityIndicator","renderManageSession","TouchableOpacity","onPress","renderContent","render","exports"],"sourceRoot":"../../js","sources":["CobrowseView.tsx"],"mappings":"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"}
|