ViewModel.swift 1.84 KB
//
//  ViewModel.swift
//  BreastFeedingDemo
//
//  Created by Jay Zhang on 2022/6/5.
//

import Foundation

class ViewModel {
    /// 语言枚举,enum代表语言包文件名,rawValue代表语言选项
    enum Language: String, CaseIterable {
        case english = "English"
        case french = "Français"
        case spanish = "Español"
    }

    var env: String = "testing"
    var apiKey: String = "DLAB-customername-12345687"
    var region: String = "apac"

    var language: Language = .english {
        didSet {
            setupText()
        }
    }

    var string: StringModel!

    var languagePack: [String: Any] {
        let languageFile = "\(language)".appending(".json")
        let path: String = Bundle.main.path(forResource: languageFile, ofType: nil)!
        let nsUrl = URL(fileURLWithPath: path)
        let nsData = try! Data(contentsOf: nsUrl)
        let json = try! JSONSerialization.jsonObject(with: nsData) as! [String: Any]
        return json
    }

    var flutterArguments: String {
        let arguments: [String: Any] = [
            "languagePack": languagePack,
            "env": env,
            "apiKey": apiKey,
            "region": region,
        ]

        let data = try? JSONSerialization.data(withJSONObject: arguments, options: [])
        let str = String(data: data!, encoding: String.Encoding.utf8)
        return str!
    }

    init() {
        language = .english
        setupText()
    }

    fileprivate func setupText() {
        let languageFile = "string_\(language)".appending(".json")
        let path: String = Bundle.main.path(forResource: languageFile, ofType: nil)!
        let nsUrl = URL(fileURLWithPath: path)
        let nsData = try! Data(contentsOf: nsUrl)
        let json = try! JSONSerialization.jsonObject(with: nsData) as! [String: Any]

        string = .init(fromDictionary: json)
    }
}