512d7563ee
- 引擎 / 鉴权跨平台 in-place(iOS 路径 #if 守卫、逐字不变,仅加 macOS/AppKit 分支):EngineController(import 守卫 + 剪贴板 UIPasteboard→NSPasteboard 上下行两处 + device_type 平台条件)、EngineWebView(UIViewRepresentable→typealias 统一后分 NSViewRepresentable)、Theme(动态色 Color(nsColor:dynamicProvider) 同 RGB)、DeviceNameStore(Host.current().localizedName)、PushRegistry(NSApplication.registerForRemoteNotifications)、Auth/BrokerLogin(presentationAnchor→NSApplication.keyWindow)、Auth/AuthManager(死 import UIKit 守卫)
- BackgroundTaskManager:整文件 #if os(iOS)(BGContinuedProcessingTask 为 API_UNAVAILABLE(macos)、编译级拒绝)+ macOS 同签名 no-op stub,使 EngineController.syncBackgroundTask 调用点无须改动
- device_type 修正(非机械):Mac 原生客户端 boot 注入 device_type=macos(与桌面 Wails 客户端一致,后端 / 各端已识别),不再硬编 ios——否则其他端设备列表图标错、且触发其 isWakeable 的 contains("ios") 误判本 Mac 可推送唤醒
- CommilitiaDropMac target 纳入「引擎 + 登录」最小集:Shared + Sources/Engine + Sources/Auth(除 iOS 专属 LoginView)+ RecordsStore / PushRegistry / LocalNetworkPermission / DeviceNameStore / BackgroundTaskManager + Resources/i18n;依赖 WebRTC;Info.plist 加 cdrop:// 回调 scheme(ASWebAuthenticationSession OAuth 回调)+ 本地网络(NSLocalNetworkUsageDescription / NSBonjourServices _cdrop._tcp)
- Mac 壳接引擎:CommilitiaDropMacApp(@State auth + engine,MacAppRoot 登录门 + 会话激活分桶记录)、MacLoginView(Broker 账户登录,免相机)、MacRootView(背景挂离屏引擎 WebView 保活 + 设备真实 presence 列表 + 设置账号/登出/引擎日志)、MacMenuContent(账号 + 在线设备数)。传输/文件/消息详情暂占位,随 Phase 3b 复用 iOS 视图
- 验证:just mac-build(CommilitiaDropMac.app)+ iOS 模拟器(CommilitiaDrop.app)均 BUILD SUCCEEDED。运行期登录 / 引擎联通待真机自测(Broker OAuth 需账号交互)
45 lines
1.7 KiB
Swift
45 lines
1.7 KiB
Swift
import SwiftUI
|
||
#if canImport(UIKit)
|
||
import UIKit
|
||
#elseif canImport(AppKit)
|
||
import AppKit
|
||
#endif
|
||
|
||
// 品牌主色单一真源(强约束③,与 web 主 accent 对齐):浅色 #644AC9 / 深色 #9580FF。放在 Shared,使主
|
||
// app、控件 / 小组件扩展共用同一定义(此前仅在主 app 的 RootView 内,扩展无法引用)。
|
||
extension Color
|
||
{
|
||
#if os(iOS)
|
||
static let cdropAccent = Color(uiColor: UIColor
|
||
{ trait in
|
||
trait.userInterfaceStyle == .dark
|
||
? UIColor(red: 0.584, green: 0.502, blue: 1.0, alpha: 1)
|
||
: UIColor(red: 0.392, green: 0.290, blue: 0.788, alpha: 1)
|
||
})
|
||
#else
|
||
static let cdropAccent = Color(nsColor: NSColor(name: nil, dynamicProvider:
|
||
{ appearance in
|
||
appearance.bestMatch(from: [ .aqua, .darkAqua ]) == .darkAqua
|
||
? NSColor(red: 0.584, green: 0.502, blue: 1.0, alpha: 1)
|
||
: NSColor(red: 0.392, green: 0.290, blue: 0.788, alpha: 1)
|
||
}))
|
||
#endif
|
||
|
||
// 品牌琥珀色(字标里「Drop」用色,对齐 web 品牌资产):浅色 #DB9410 / 深色 #F8C637。
|
||
#if os(iOS)
|
||
static let cdropAmber = Color(uiColor: UIColor
|
||
{ trait in
|
||
trait.userInterfaceStyle == .dark
|
||
? UIColor(red: 0.973, green: 0.776, blue: 0.216, alpha: 1)
|
||
: UIColor(red: 0.859, green: 0.580, blue: 0.063, alpha: 1)
|
||
})
|
||
#else
|
||
static let cdropAmber = Color(nsColor: NSColor(name: nil, dynamicProvider:
|
||
{ appearance in
|
||
appearance.bestMatch(from: [ .aqua, .darkAqua ]) == .darkAqua
|
||
? NSColor(red: 0.973, green: 0.776, blue: 0.216, alpha: 1)
|
||
: NSColor(red: 0.859, green: 0.580, blue: 0.063, alpha: 1)
|
||
}))
|
||
#endif
|
||
}
|