ViewActions.swift 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. //
  2. // ViewActions.swift
  3. // TUIRoomKit
  4. //
  5. // Created by CY zhao on 2024/7/9.
  6. //
  7. import Foundation
  8. enum ViewActions {
  9. static let key = "action.view"
  10. static let toastActionKey = key + ".showToast"
  11. static let showToast = ActionTemplate(id: toastActionKey, payloadType: ToastInfo.self)
  12. }
  13. enum ScheduleViewActions {
  14. static let key = ViewActions.key + ".scheduleView"
  15. static let refreshConferenceList = ActionTemplate(id: key.appending(".refreshConferenceList"))
  16. static let stopRefreshList = ActionTemplate(id: key.appending(".stopRefreshList"))
  17. static let popDetailView = ActionTemplate(id: key.appending(".popDetailView"))
  18. static let resetPopDetailFlag = ActionTemplate(id: key.appending(".resetPopDetailFlag"))
  19. }
  20. enum InvitationViewActions {
  21. static let key = ViewActions.key + ".invitationView"
  22. static let dismissInvitationView = ActionTemplate(id: key.appending(".dismissInvitationView"))
  23. static let resetInvitationFlag = ActionTemplate(id: key.appending(".resetInvitationFlag"))
  24. static let showInvitationPopupView = ActionTemplate(id: key.appending(".showInvitationPopupView"))
  25. static let resetPopupViewFlag = ActionTemplate(id: key.appending(".resetPopupViewFlag"))
  26. }
  27. struct ToastInfo: Identifiable {
  28. enum Position {
  29. case center
  30. case bottom
  31. }
  32. let id: UUID
  33. let duration: TimeInterval
  34. let position: Position
  35. let message: String
  36. init(message: String, position: Position = .center, duration: TimeInterval = 1.5) {
  37. id = UUID()
  38. self.message = message
  39. self.position = position
  40. self.duration = duration
  41. }
  42. }
  43. extension ToastInfo: Equatable {
  44. static func ==(lhs: ToastInfo, rhs: ToastInfo) -> Bool{
  45. return lhs.id == rhs.id || lhs.message == rhs.message
  46. }
  47. }