Files
suixinkan_uikit/suixinkan/Core/WeChat/WeChatShareModels.swift
汉秋 efb3925257 完善首页权限申请流程与队列播报体验。
对齐 Android 无权限强制弹窗、角色下拉与申请页交互,补充 UIButton configuration 适配,并增强景区排队 TTS 与相关单元测试。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-14 13:46:45 +08:00

126 lines
3.0 KiB
Swift
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// WeChatShareModels.swift
// suixinkan
//
import Foundation
///
enum WeChatShareScene: Int, CaseIterable, Sendable {
///
case session = 0
///
case timeline = 1
///
case favorite = 2
///
var title: String {
switch self {
case .session:
return "微信好友"
case .timeline:
return "朋友圈"
case .favorite:
return "收藏"
}
}
/// SDK `scene`
var wxSceneValue: Int32 {
Int32(rawValue)
}
}
///
enum WeChatShareResult: Equatable, Error, Sendable {
case success
case cancelled
case notInstalled
case unsupported
case invalidPayload(String)
case sendFailed(Int)
case unknown(Int)
/// SDK
static func fromWXErrorCode(_ code: Int32) -> WeChatShareResult {
switch code {
case 0:
return .success
case -2:
return .cancelled
default:
return .unknown(Int(code))
}
}
}
///
enum WeChatMiniProgramType: Int, Equatable, Sendable {
///
case release = 0
///
case test = 1
///
case preview = 2
/// SDK
var resolvedForCurrentBuild: WeChatMiniProgramType {
#if DEBUG
return .preview
#else
return self
#endif
}
}
///
struct WeChatWebPageSharePayload: Equatable, Sendable {
let title: String
let description: String
let url: String
}
///
struct WeChatTextSharePayload: Equatable, Sendable {
let text: String
}
///
struct WeChatImageSharePayload: Equatable, Sendable {
let imageData: Data
}
///
struct WeChatMiniProgramSharePayload: Equatable, Sendable {
let title: String
let description: String
let webpageURL: String
let userName: String
let path: String?
let miniProgramType: WeChatMiniProgramType
let withShareTicket: Bool
let disableForward: Bool
///
init(
title: String,
description: String,
webpageURL: String,
userName: String,
path: String? = nil,
miniProgramType: WeChatMiniProgramType = .release,
withShareTicket: Bool = false,
disableForward: Bool = false
) {
self.title = title
self.description = description
self.webpageURL = webpageURL
self.userName = userName
self.path = path
self.miniProgramType = miniProgramType
self.withShareTicket = withShareTicket
self.disableForward = disableForward
}
}