54 lines
1.8 KiB
Swift
54 lines
1.8 KiB
Swift
|
|
//
|
||
|
|
// FetchRoomId.swift
|
||
|
|
// TUIRoomKit
|
||
|
|
//
|
||
|
|
// Created by janejntang on 2024/1/29.
|
||
|
|
//
|
||
|
|
|
||
|
|
import Foundation
|
||
|
|
import TUICore
|
||
|
|
|
||
|
|
class FetchRoomId {
|
||
|
|
class func getRoomId(onGetRoomId: @escaping (String)->()) {
|
||
|
|
let roomId = getRandomRoomId(numberOfDigits: 6)
|
||
|
|
checkIfRoomIdExists(roomId: roomId) {
|
||
|
|
getRoomId(onGetRoomId: onGetRoomId)
|
||
|
|
} onNotExist: {
|
||
|
|
onGetRoomId(roomId)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
class func getRandomRoomId(numberOfDigits: Int) -> String {
|
||
|
|
var numberOfDigit = numberOfDigits > 0 ? numberOfDigits : 1
|
||
|
|
numberOfDigit = numberOfDigit < 10 ? numberOfDigit : 9
|
||
|
|
let minNumber = Int(truncating: NSDecimalNumber(decimal: pow(10, numberOfDigit - 1)))
|
||
|
|
let maxNumber = Int(truncating: NSDecimalNumber(decimal: pow(10, numberOfDigit))) - 1
|
||
|
|
let randomNumber = arc4random_uniform(UInt32(maxNumber - minNumber)) + UInt32(minNumber)
|
||
|
|
return String(randomNumber)
|
||
|
|
}
|
||
|
|
|
||
|
|
class func checkIfRoomIdExists(roomId: String, onExist: @escaping () -> (), onNotExist: @escaping () -> ()) {
|
||
|
|
V2TIMManager.sharedInstance().getGroupsInfo([roomId]) { infoResult in
|
||
|
|
if checkIfRoomIdExistsWithResultCode(infoResult?.first?.resultCode) {
|
||
|
|
onExist()
|
||
|
|
} else {
|
||
|
|
onNotExist()
|
||
|
|
}
|
||
|
|
} fail: { code, message in
|
||
|
|
onNotExist()
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
private class func checkIfRoomIdExistsWithResultCode(_ resultCode: Int32?) -> Bool {
|
||
|
|
let kIMCodeGroupSuccess = 0
|
||
|
|
let kIMCodeGroupInsufficientOperationAuthority = 10007
|
||
|
|
if let resultCode = resultCode {
|
||
|
|
return resultCode == kIMCodeGroupSuccess || resultCode == kIMCodeGroupInsufficientOperationAuthority
|
||
|
|
} else {
|
||
|
|
return false
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
|