Skip to content

Commit 9e8cf70

Browse files
committed
More toast
1 parent 95e0d73 commit 9e8cf70

File tree

7 files changed

+32
-6
lines changed

7 files changed

+32
-6
lines changed

Flat/Api/Core/FlatServerError.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,8 @@ enum FlatApiError: Int, LocalizedError, CaseIterable {
5252
case RoomNotFoundAndIsPmi // room not found and the invite code is pmi
5353

5454
case RoomReachLimit = 210_002
55+
case RoomNotBegin = 210_004
56+
case RoomCreateLimit = 210_005
5557

5658
case PeriodicNotFound = 300_000
5759
case PeriodicIsEnded

Flat/Extensions/UIView/UIView+FlatLoading.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ extension UIView {
107107
}
108108
}
109109

110-
func endFlatLoading(withDelay delay: TimeInterval = 0.5) {
110+
func endFlatLoading(withDelay delay: TimeInterval = 0.5, completion: (()->Void)? = nil) {
111111
if delay <= 0 {
112112
flatLoadingView.stopAnimating()
113113
flatLoadingView.removeFromSuperview()
@@ -120,6 +120,7 @@ extension UIView {
120120
guard finish else { return }
121121
self.flatLoadingView.stopAnimating()
122122
self.flatLoadingView.removeFromSuperview()
123+
completion?()
123124
}
124125
}
125126
}

Flat/Extensions/UIView/UIViewController+Toast.swift

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,17 +17,24 @@ func configProgressHUDAppearance() {
1717
extension UIViewController {
1818
func toast(_ text: String,
1919
timeInterval: TimeInterval = 1.5,
20-
preventTouching: Bool = false)
20+
preventTouching: Bool = false,
21+
offset: CGPoint? = nil,
22+
hidePreviouds: Bool = true)
2123
{
2224
guard !text.isEmpty else { return }
2325
DispatchQueue.main.async { [weak view] in
2426
guard let window = view?.window else { return }
25-
MBProgressHUD.hide(for: window, animated: false)
27+
if hidePreviouds {
28+
MBProgressHUD.hide(for: window, animated: false)
29+
}
2630
let hud = MBProgressHUD.showAdded(to: window, animated: true)
2731
hud.bezelView.style = .solidColor
2832
hud.bezelView.color = UIColor.black.withAlphaComponent(0.45)
2933
hud.backgroundView.style = .solidColor
3034
hud.backgroundView.color = UIColor.black.withAlphaComponent(0.05)
35+
if let offset {
36+
hud.offset = offset
37+
}
3138
hud.mode = .text
3239
hud.label.textColor = .white
3340
hud.label.numberOfLines = 5

Flat/Models/Flat/RoomPlayInfo.swift

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,11 @@ import Foundation
1010
import RxSwift
1111

1212
struct RoomPlayInfo: Codable {
13+
struct BillingInfo: Codable {
14+
// Time limit.
15+
let limit: Int
16+
}
17+
let billing: BillingInfo
1318
let roomType: ClassRoomType
1419
let roomUUID: String
1520
let ownerUUID: String

Flat/Modules/ClassRoom/ClassRoomViewController.swift

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
// Copyright © 2022 agora.io. All rights reserved.
77
//
88

9+
import MBProgressHUD
910
import Fastboard
1011
import RxCocoa
1112
import RxSwift
@@ -168,7 +169,13 @@ class ClassRoomViewController: UIViewController {
168169
result.initRoomResult
169170
.do(
170171
onSuccess: { [weak self] in
171-
self?.view.endFlatLoading()
172+
guard let self else { return }
173+
self.view.endFlatLoading {
174+
if self.viewModel.roomTimeLimit > 0 {
175+
let msg = String(format: NSLocalizedString("FreeRoomTimeLimitTip %@", comment: "free room time limit tips"), self.viewModel.roomTimeLimit.description)
176+
self.toast(msg, timeInterval: 3, offset: .init(x: 0, y: MBProgressMaxOffset), hidePreviouds: false)
177+
}
178+
}
172179
},
173180
onSubscribed: { [weak self] in
174181
self?.view.startFlatLoading(showCancelDelay: 7, cancelCompletion: { [weak self] in

Flat/Modules/ClassRoom/ClassRoomViewModel.swift

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ class ClassRoomViewModel {
2020
let roomUUID: String
2121
let isOwner: Bool
2222
let roomType: ClassRoomType
23+
let roomTimeLimit: Int
2324
let initDeviceState: DeviceState
2425
var banState: Observable<Bool> { stateHandler.banState.asObservable() }
2526
var members: Observable<[RoomUser]> { stateHandler.members() }
@@ -125,14 +126,16 @@ class ClassRoomViewModel {
125126
roomType: ClassRoomType,
126127
commandChannelRequest: Single<RtmChannelProvider>,
127128
alertProvider: AlertProvider,
128-
preferredDeviceState: DeviceState)
129+
preferredDeviceState: DeviceState,
130+
roomTimeLimit: Int)
129131
{
130132
self.stateHandler = stateHandler
131133
self.initDeviceState = initDeviceState
132134
self.isOwner = isOwner
133135
self.userUUID = userUUID
134136
self.roomUUID = roomUUID
135137
self.roomType = roomType
138+
self.roomTimeLimit = roomTimeLimit
136139
self.commandChannelRequest = commandChannelRequest
137140
self.alertProvider = alertProvider
138141
self.preferredDeviceState = preferredDeviceState

Flat/Modules/ClassRoom/ClassroomFactory.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,8 @@ enum ClassroomFactory {
153153
roomType: basicInfo.roomType,
154154
commandChannelRequest: rtmChannel,
155155
alertProvider: alertProvider,
156-
preferredDeviceState: deviceStatus)
156+
preferredDeviceState: deviceStatus,
157+
roomTimeLimit: playInfo.billing.limit)
157158

158159
let userListViewController = ClassRoomUsersViewController(userUUID: playInfo.rtmUID, roomOwnerRtmUUID: playInfo.ownerUUID)
159160
let shareViewController: () -> UIViewController = {

0 commit comments

Comments
 (0)