75 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Swift
		
	
	
	
	
	
			
		
		
	
	
			75 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Swift
		
	
	
	
	
	
//
 | 
						|
//  AppState.swift
 | 
						|
//  SodaLive
 | 
						|
//
 | 
						|
//  Created by klaus on 2023/08/09.
 | 
						|
//
 | 
						|
 | 
						|
import Foundation
 | 
						|
 | 
						|
class AppState: ObservableObject {
 | 
						|
    static let shared = AppState()
 | 
						|
    
 | 
						|
    private var appStepBackStack = [AppStep]()
 | 
						|
    
 | 
						|
    @Published var alreadyUpdatedMarketingInfo = false
 | 
						|
    @Published private(set) var appStep: AppStep = .splash
 | 
						|
    
 | 
						|
    @Published var isShowPlayer = false {
 | 
						|
        didSet {
 | 
						|
            if isShowPlayer {
 | 
						|
                ContentPlayManager.shared.stopAudio()
 | 
						|
                ContentPlayerPlayManager.shared.resetPlayer()
 | 
						|
            }
 | 
						|
        }
 | 
						|
    }
 | 
						|
    
 | 
						|
    @Published var isShowNotificationSettingsDialog = false
 | 
						|
    
 | 
						|
    @Published var pushRoomId = 0
 | 
						|
    @Published var pushChannelId = 0
 | 
						|
    @Published var pushMessageId = 0
 | 
						|
    @Published var pushAudioContentId = 0
 | 
						|
    @Published var pushSeriesId = 0
 | 
						|
    @Published var roomId = 0 {
 | 
						|
        didSet {
 | 
						|
            if roomId <= 0 {
 | 
						|
                isShowPlayer = false
 | 
						|
            }
 | 
						|
        }
 | 
						|
    }
 | 
						|
    
 | 
						|
    @Published var eventPopup: EventItem? = nil
 | 
						|
    @Published var purchasedContentId = 0
 | 
						|
    @Published var purchasedContentOrderType = OrderType.KEEP
 | 
						|
    
 | 
						|
    @Published var isChangeAdultContentVisible = false
 | 
						|
    @Published var startTab: HomeViewModel.CurrentTab = .content
 | 
						|
    
 | 
						|
    @Published var marketingUtmSource = ""
 | 
						|
    @Published var marketingUtmMedium = ""
 | 
						|
    @Published var marketingUtmCampaign = ""
 | 
						|
    
 | 
						|
    func setAppStep(step: AppStep) {
 | 
						|
        switch step {
 | 
						|
        case .splash, .main:
 | 
						|
            appStepBackStack.removeAll()
 | 
						|
            
 | 
						|
        default:
 | 
						|
            appStepBackStack.append(appStep)
 | 
						|
        }
 | 
						|
        
 | 
						|
        DispatchQueue.main.async {
 | 
						|
            self.appStep = step
 | 
						|
        }
 | 
						|
    }
 | 
						|
    
 | 
						|
    func back() {
 | 
						|
        if let step = appStepBackStack.popLast() {
 | 
						|
            self.appStep = step
 | 
						|
        } else {
 | 
						|
            self.appStep = .main
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 |