You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
142 lines
3.4 KiB
TypeScript
142 lines
3.4 KiB
TypeScript
import { events } from './constants'
|
|
|
|
export const getUniPlatform = () => {
|
|
// @ts-ignore
|
|
return uni.getSystemInfoSync().uniPlatform
|
|
}
|
|
|
|
export const getPlatform = () => {
|
|
// @ts-ignore
|
|
return uni.getSystemInfoSync().platform
|
|
}
|
|
// 是否是android app
|
|
export const isAndroidApp =
|
|
uni.getSystemInfoSync().platform == 'android' &&
|
|
uni.getSystemInfoSync().uniPlatform == 'app'
|
|
|
|
// 是否是Ios app
|
|
export const isIosApp =
|
|
uni.getSystemInfoSync().platform == 'ios' &&
|
|
uni.getSystemInfoSync().uniPlatform == 'app'
|
|
|
|
// 是否是Ios web
|
|
export const isIosWeb =
|
|
uni.getSystemInfoSync().uniPlatform === 'web' &&
|
|
uni.getSystemInfoSync().platform === 'ios'
|
|
|
|
// 是否是App
|
|
export const isApp = uni.getSystemInfoSync().uniPlatform == 'app'
|
|
|
|
// 是否是微信小程序
|
|
export const isWxApp = uni.getSystemInfoSync().uniPlatform == 'mp-weixin'
|
|
|
|
// 是否是web
|
|
export const isWeb = uni.getSystemInfoSync().uniPlatform === 'web'
|
|
|
|
// @ts-ignore
|
|
export function deepClone(source: any, visited = new WeakMap()) {
|
|
if (source === null || typeof source !== 'object') {
|
|
return source
|
|
}
|
|
|
|
if (visited.has(source)) {
|
|
return visited.get(source)
|
|
}
|
|
// @ts-ignore
|
|
let clone
|
|
|
|
if (source instanceof Date) {
|
|
clone = new Date(source.getTime())
|
|
} else if (source instanceof RegExp) {
|
|
clone = new RegExp(source)
|
|
} else if (source instanceof Map) {
|
|
clone = new Map()
|
|
visited.set(source, clone)
|
|
source.forEach((value, key) => {
|
|
// @ts-ignore
|
|
clone.set(key, deepClone(value, visited))
|
|
})
|
|
} else if (source instanceof Set) {
|
|
clone = new Set()
|
|
visited.set(source, clone)
|
|
source.forEach((value) => {
|
|
// @ts-ignore
|
|
clone.add(deepClone(value, visited))
|
|
})
|
|
} else if (Array.isArray(source)) {
|
|
clone = []
|
|
// @ts-ignore
|
|
visited.set(source, clone)
|
|
for (let i = 0; i < source.length; i++) {
|
|
clone[i] = deepClone(source[i], visited)
|
|
}
|
|
} else {
|
|
clone = Object.create(Object.getPrototypeOf(source))
|
|
visited.set(source, clone)
|
|
for (const prop in source) {
|
|
if (source.hasOwnProperty(prop)) {
|
|
clone[prop] = deepClone(source[prop], visited)
|
|
}
|
|
}
|
|
}
|
|
|
|
return clone
|
|
}
|
|
|
|
export function stopAllAudio() {
|
|
uni.$emit(events.AUDIO_URL_CHANGE, '')
|
|
}
|
|
|
|
/**
|
|
* 秒转换为时分秒
|
|
*/
|
|
export const convertSecondsToTime = (seconds: number): string | null => {
|
|
if (!seconds) {
|
|
return null
|
|
}
|
|
const hours: number = Math.floor(seconds / 3600)
|
|
const minutes: number = Math.floor((seconds - hours * 3600) / 60)
|
|
const remainingSeconds: number = seconds - hours * 3600 - minutes * 60
|
|
|
|
let timeString = ''
|
|
|
|
const includeHours = seconds >= 3600
|
|
if (includeHours) {
|
|
if (hours < 10) {
|
|
timeString += '0'
|
|
}
|
|
timeString += hours.toString() + ':'
|
|
}
|
|
|
|
if (minutes < 10) {
|
|
timeString += '0'
|
|
}
|
|
timeString += minutes.toString() + ':'
|
|
|
|
if (remainingSeconds < 10) {
|
|
timeString += '0'
|
|
}
|
|
timeString += remainingSeconds.toString()
|
|
|
|
return timeString
|
|
}
|
|
|
|
export const startCall = (options: {
|
|
remoteUserAccid: string
|
|
currentUserAccid: string
|
|
type: number
|
|
remoteShowName: string
|
|
}) => {
|
|
try {
|
|
// @ts-ignore
|
|
uni.$UIKitCallKit.toCallPage({
|
|
remoteUserAccid: options.remoteUserAccid,
|
|
currentUserAccid: options.currentUserAccid,
|
|
type: options.type,
|
|
remoteShowName: options.remoteShowName,
|
|
})
|
|
} catch (error) {
|
|
console.log('handleVideoCall error', error)
|
|
}
|
|
}
|