Commit eadccd2a52af26be661b017671e06acf9de8b78e

Authored by 权海
1 parent 04eefd5a

feat(ui):更新platform api

feat(ui):修复调用bridge报错

feat(ui):修复
... ... @@ -36,6 +36,12 @@
@import permission_handler_apple;
#endif
#if __has_include(<share_plus/FPPSharePlusPlugin.h>)
#import <share_plus/FPPSharePlusPlugin.h>
#else
@import share_plus;
#endif
#if __has_include(<shared_preferences_foundation/SharedPreferencesPlugin.h>)
#import <shared_preferences_foundation/SharedPreferencesPlugin.h>
#else
... ... @@ -62,6 +68,7 @@
[FLTImagePickerPlugin registerWithRegistrar:[registry registrarForPlugin:@"FLTImagePickerPlugin"]];
[PathProviderPlugin registerWithRegistrar:[registry registrarForPlugin:@"PathProviderPlugin"]];
[PermissionHandlerPlugin registerWithRegistrar:[registry registrarForPlugin:@"PermissionHandlerPlugin"]];
[FPPSharePlusPlugin registerWithRegistrar:[registry registrarForPlugin:@"FPPSharePlusPlugin"]];
[SharedPreferencesPlugin registerWithRegistrar:[registry registrarForPlugin:@"SharedPreferencesPlugin"]];
[SqflitePlugin registerWithRegistrar:[registry registrarForPlugin:@"SqflitePlugin"]];
[WebViewFlutterPlugin registerWithRegistrar:[registry registrarForPlugin:@"WebViewFlutterPlugin"]];
... ...
... ... @@ -324,10 +324,15 @@ interface PlatformHostApi {
* baseUrl: 请求地址, https://api.doublefeel.cn
*/
fun updateLoginInfo(jsonString: String, baseUrl: String)
/** 设置好友显示到表盘 */
fun updateWatchOtherUserInfo(otherInfo: WatchAppOtherInfo?)
/** 刷新表盘 */
fun refreshWatchSurface()
/** 退出登录 */
fun logout()
/** 刷新会员信息 */
fun refreshVip()
/**
* 刷新watch app 和 表盘的所有数据:
* 任何可能导致展示watch内容变化时调用(好友变化、某些设置导致变化等)
*/
fun refreshWatchAppAndWidgets()
/** 请求苹果登录 */
fun requestAppleSignIn(callback: (Result<AppleSignInModel?>) -> Unit)
/**
... ... @@ -385,13 +390,27 @@ interface PlatformHostApi {
}
}
run {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.doublefeel_flutter.PlatformHostApi.updateWatchOtherUserInfo$separatedMessageChannelSuffix", codec)
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.doublefeel_flutter.PlatformHostApi.logout$separatedMessageChannelSuffix", codec)
if (api != null) {
channel.setMessageHandler { message, reply ->
val args = message as List<Any?>
val otherInfoArg = args[0] as WatchAppOtherInfo?
channel.setMessageHandler { _, reply ->
val wrapped: List<Any?> = try {
api.logout()
listOf(null)
} catch (exception: Throwable) {
PlatformApiPigeonUtils.wrapError(exception)
}
reply.reply(wrapped)
}
} else {
channel.setMessageHandler(null)
}
}
run {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.doublefeel_flutter.PlatformHostApi.refreshVip$separatedMessageChannelSuffix", codec)
if (api != null) {
channel.setMessageHandler { _, reply ->
val wrapped: List<Any?> = try {
api.updateWatchOtherUserInfo(otherInfoArg)
api.refreshVip()
listOf(null)
} catch (exception: Throwable) {
PlatformApiPigeonUtils.wrapError(exception)
... ... @@ -403,11 +422,11 @@ interface PlatformHostApi {
}
}
run {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.doublefeel_flutter.PlatformHostApi.refreshWatchSurface$separatedMessageChannelSuffix", codec)
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.doublefeel_flutter.PlatformHostApi.refreshWatchAppAndWidgets$separatedMessageChannelSuffix", codec)
if (api != null) {
channel.setMessageHandler { _, reply ->
val wrapped: List<Any?> = try {
api.refreshWatchSurface()
api.refreshWatchAppAndWidgets()
listOf(null)
} catch (exception: Throwable) {
PlatformApiPigeonUtils.wrapError(exception)
... ...
... ... @@ -358,10 +358,13 @@ protocol PlatformHostApi {
/// jsonString: UserPreferences的序列化string
/// baseUrl: 请求地址, https://api.doublefeel.cn
func updateLoginInfo(jsonString: String, baseUrl: String) throws
/// 设置好友显示到表盘
func updateWatchOtherUserInfo(otherInfo: WatchAppOtherInfo?) throws
/// 刷新表盘
func refreshWatchSurface() throws
/// 退出登录
func logout() throws
/// 刷新会员信息
func refreshVip() throws
/// 刷新watch app 和 表盘的所有数据:
/// 任何可能导致展示watch内容变化时调用(好友变化、某些设置导致变化等)
func refreshWatchAppAndWidgets() throws
/// 请求苹果登录
func requestAppleSignIn(completion: @escaping (Result<AppleSignInModel?, Error>) -> Void)
/// 查询指定id的苹果商品
... ... @@ -414,35 +417,48 @@ class PlatformHostApiSetup {
} else {
updateLoginInfoChannel.setMessageHandler(nil)
}
/// 设置好友显示到表盘
let updateWatchOtherUserInfoChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.doublefeel_flutter.PlatformHostApi.updateWatchOtherUserInfo\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec)
/// 退出登录
let logoutChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.doublefeel_flutter.PlatformHostApi.logout\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec)
if let api = api {
updateWatchOtherUserInfoChannel.setMessageHandler { message, reply in
let args = message as! [Any?]
let otherInfoArg: WatchAppOtherInfo? = nilOrValue(args[0])
logoutChannel.setMessageHandler { _, reply in
do {
try api.logout()
reply(wrapResult(nil))
} catch {
reply(wrapError(error))
}
}
} else {
logoutChannel.setMessageHandler(nil)
}
/// 刷新会员信息
let refreshVipChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.doublefeel_flutter.PlatformHostApi.refreshVip\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec)
if let api = api {
refreshVipChannel.setMessageHandler { _, reply in
do {
try api.updateWatchOtherUserInfo(otherInfo: otherInfoArg)
try api.refreshVip()
reply(wrapResult(nil))
} catch {
reply(wrapError(error))
}
}
} else {
updateWatchOtherUserInfoChannel.setMessageHandler(nil)
refreshVipChannel.setMessageHandler(nil)
}
/// 刷新表盘
let refreshWatchSurfaceChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.doublefeel_flutter.PlatformHostApi.refreshWatchSurface\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec)
/// 刷新watch app 和 表盘的所有数据:
/// 任何可能导致展示watch内容变化时调用(好友变化、某些设置导致变化等)
let refreshWatchAppAndWidgetsChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.doublefeel_flutter.PlatformHostApi.refreshWatchAppAndWidgets\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec)
if let api = api {
refreshWatchSurfaceChannel.setMessageHandler { _, reply in
refreshWatchAppAndWidgetsChannel.setMessageHandler { _, reply in
do {
try api.refreshWatchSurface()
try api.refreshWatchAppAndWidgets()
reply(wrapResult(nil))
} catch {
reply(wrapError(error))
}
}
} else {
refreshWatchSurfaceChannel.setMessageHandler(nil)
refreshWatchAppAndWidgetsChannel.setMessageHandler(nil)
}
/// 请求苹果登录
let requestAppleSignInChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.doublefeel_flutter.PlatformHostApi.requestAppleSignIn\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec)
... ...
... ... @@ -37,6 +37,18 @@ class PriceFormatter{
* `{systemWebViewUA} doublefeel/{versionCode}({versionName})(Apple##Apple##{model}; iOS{osVersion}; {height}x{width})(huawei)`
*/
final class PlatformHostApiImpl: PlatformHostApi {
func logout() throws {
}
func refreshVip() throws {
}
func refreshWatchAppAndWidgets() throws {
}
func performRestore(completion: @escaping (Result<Bool, any Error>) -> Void) {
Task{
let success = await AppShared.shared.payment.restore()
... ...
... ... @@ -28,7 +28,7 @@ class FriendsController extends GetxController {
_selfHealthRepository = selfHealthRepository ??
SelfHealthRepositoryImpl(Get.find<HealthApi>()),
_updateWatchOtherUserInfo = updateWatchOtherUserInfo ??
((info) => PlatformHostApi().updateWatchOtherUserInfo(info));
((info) => PlatformHostApi().refreshWatchAppAndWidgets());
static const maxFriends = 10;
... ...
... ... @@ -408,15 +408,39 @@ class PlatformHostApi {
}
}
/// 设置好友显示到表盘
Future<void> updateWatchOtherUserInfo(WatchAppOtherInfo? otherInfo) async {
final String pigeonVar_channelName = 'dev.flutter.pigeon.doublefeel_flutter.PlatformHostApi.updateWatchOtherUserInfo$pigeonVar_messageChannelSuffix';
/// 退出登录
Future<void> logout() async {
final String pigeonVar_channelName = 'dev.flutter.pigeon.doublefeel_flutter.PlatformHostApi.logout$pigeonVar_messageChannelSuffix';
final BasicMessageChannel<Object?> pigeonVar_channel = BasicMessageChannel<Object?>(
pigeonVar_channelName,
pigeonChannelCodec,
binaryMessenger: pigeonVar_binaryMessenger,
);
final Future<Object?> pigeonVar_sendFuture = pigeonVar_channel.send(<Object?>[otherInfo]);
final Future<Object?> pigeonVar_sendFuture = pigeonVar_channel.send(null);
final List<Object?>? pigeonVar_replyList =
await pigeonVar_sendFuture as List<Object?>?;
if (pigeonVar_replyList == null) {
throw _createConnectionError(pigeonVar_channelName);
} else if (pigeonVar_replyList.length > 1) {
throw PlatformException(
code: pigeonVar_replyList[0]! as String,
message: pigeonVar_replyList[1] as String?,
details: pigeonVar_replyList[2],
);
} else {
return;
}
}
/// 刷新会员信息
Future<void> refreshVip() async {
final String pigeonVar_channelName = 'dev.flutter.pigeon.doublefeel_flutter.PlatformHostApi.refreshVip$pigeonVar_messageChannelSuffix';
final BasicMessageChannel<Object?> pigeonVar_channel = BasicMessageChannel<Object?>(
pigeonVar_channelName,
pigeonChannelCodec,
binaryMessenger: pigeonVar_binaryMessenger,
);
final Future<Object?> pigeonVar_sendFuture = pigeonVar_channel.send(null);
final List<Object?>? pigeonVar_replyList =
await pigeonVar_sendFuture as List<Object?>?;
if (pigeonVar_replyList == null) {
... ... @@ -432,9 +456,10 @@ class PlatformHostApi {
}
}
/// 刷新表盘
Future<void> refreshWatchSurface() async {
final String pigeonVar_channelName = 'dev.flutter.pigeon.doublefeel_flutter.PlatformHostApi.refreshWatchSurface$pigeonVar_messageChannelSuffix';
/// 刷新watch app 和 表盘的所有数据:
/// 任何可能导致展示watch内容变化时调用(好友变化、某些设置导致变化等)
Future<void> refreshWatchAppAndWidgets() async {
final String pigeonVar_channelName = 'dev.flutter.pigeon.doublefeel_flutter.PlatformHostApi.refreshWatchAppAndWidgets$pigeonVar_messageChannelSuffix';
final BasicMessageChannel<Object?> pigeonVar_channel = BasicMessageChannel<Object?>(
pigeonVar_channelName,
pigeonChannelCodec,
... ...
... ... @@ -116,11 +116,15 @@ abstract class PlatformHostApi {
/// baseUrl: 请求地址, https://api.doublefeel.cn
void updateLoginInfo(String jsonString, String baseUrl);
/// 设置好友显示到表盘
void updateWatchOtherUserInfo(WatchAppOtherInfo? otherInfo);
/// 刷新表盘
void refreshWatchSurface();
/// 退出登录
void logout();
/// 刷新会员信息
void refreshVip();
/// 刷新watch app 和 表盘的所有数据:
/// 任何可能导致展示watch内容变化时调用(好友变化、某些设置导致变化等)
void refreshWatchAppAndWidgets();
/// 请求苹果登录
@async
... ...