@@ -23,6 +23,8 @@ use bitfun_services_integrations::miniapp_market::{
2323use serde:: { Deserialize , Serialize } ;
2424use std:: collections:: HashMap ;
2525use std:: path:: { Path , PathBuf } ;
26+ #[ cfg( target_env = "ohos" ) ]
27+ use std:: sync:: Arc ;
2628use std:: sync:: OnceLock ;
2729use std:: time:: { SystemTime , UNIX_EPOCH } ;
2830use tauri:: { AppHandle , Emitter , Manager , State , WebviewWindow } ;
@@ -32,6 +34,20 @@ use tokio::sync::Mutex;
3234const MARKET_UPLOAD_PROGRESS_EVENT : & str = "miniapp-market-upload-progress" ;
3335const MARKET_ACCOUNT_CHANGED_EVENT : & str = "miniapp-market-account-changed" ;
3436
37+ async fn market_client ( ) -> Result < MarketClient , String > {
38+ #[ cfg( target_env = "ohos" ) ]
39+ {
40+ let store =
41+ Arc :: new ( crate :: api:: ohos:: market_credentials:: OhosMarketCredentialStore :: new ( ) ) ;
42+ return MarketClient :: from_environment_with_credential_store ( store)
43+ . await
44+ . map_err ( market_error) ;
45+ }
46+
47+ #[ cfg( not( target_env = "ohos" ) ) ]
48+ MarketClient :: from_environment ( ) . await . map_err ( market_error)
49+ }
50+
3551#[ derive( Debug , Clone ) ]
3652struct PendingDesktopAuth {
3753 request : DesktopAuthPollRequest ,
@@ -170,27 +186,21 @@ pub struct MarketPackageInspection {
170186pub async fn miniapp_market_browse (
171187 request : MarketBrowseRequest ,
172188) -> Result < CursorPage < MarketListingSummary > , String > {
173- let client = MarketClient :: from_environment ( )
174- . await
175- . map_err ( market_error) ?;
189+ let client = market_client ( ) . await ?;
176190 client. browse ( & request) . await . map_err ( market_error)
177191}
178192
179193#[ tauri:: command]
180194pub async fn miniapp_market_get_listing (
181195 request : MarketSlugRequest ,
182196) -> Result < MarketListingDetail , String > {
183- let mut client = MarketClient :: from_environment ( )
184- . await
185- . map_err ( market_error) ?;
197+ let mut client = market_client ( ) . await ?;
186198 client. listing ( & request. slug ) . await . map_err ( market_error)
187199}
188200
189201#[ tauri:: command]
190202pub async fn miniapp_market_auth_start ( ) -> Result < DesktopAuthStartView , String > {
191- let client = MarketClient :: from_environment ( )
192- . await
193- . map_err ( market_error) ?;
203+ let client = market_client ( ) . await ?;
194204 let started = client. start_desktop_auth ( ) . await . map_err ( market_error) ?;
195205 let mut pending = pending_desktop_auth ( ) . lock ( ) . await ;
196206 let now = unix_now ( ) ;
@@ -231,9 +241,7 @@ pub async fn miniapp_market_auth_poll(
231241 }
232242 pending
233243 } ;
234- let mut client = MarketClient :: from_environment ( )
235- . await
236- . map_err ( market_error) ?;
244+ let mut client = market_client ( ) . await ?;
237245 let response: DesktopAuthPollResponse = client
238246 . poll_desktop_auth ( & pending. request )
239247 . await
@@ -254,17 +262,13 @@ pub async fn miniapp_market_auth_poll(
254262
255263#[ tauri:: command]
256264pub async fn miniapp_market_me ( ) -> Result < Option < MarketMe > , String > {
257- let mut client = MarketClient :: from_environment ( )
258- . await
259- . map_err ( market_error) ?;
265+ let mut client = market_client ( ) . await ?;
260266 client. me ( ) . await . map_err ( market_error)
261267}
262268
263269#[ tauri:: command]
264270pub async fn miniapp_market_logout ( app : AppHandle ) -> Result < ( ) , String > {
265- let mut client = MarketClient :: from_environment ( )
266- . await
267- . map_err ( market_error) ?;
271+ let mut client = market_client ( ) . await ?;
268272 client. logout ( ) . await . map_err ( market_error) ?;
269273 emit_market_account_changed ( & app, "signed-out" ) ;
270274 Ok ( ( ) )
@@ -277,9 +281,7 @@ pub async fn miniapp_market_set_rating(
277281 if request. value . is_some_and ( |value| !( 1 ..=5 ) . contains ( & value) ) {
278282 return Err ( "Rating must be between 1 and 5." . to_string ( ) ) ;
279283 }
280- let mut client = MarketClient :: from_environment ( )
281- . await
282- . map_err ( market_error) ?;
284+ let mut client = market_client ( ) . await ?;
283285 client
284286 . set_rating ( & request. slug , request. value )
285287 . await
@@ -290,9 +292,7 @@ pub async fn miniapp_market_set_rating(
290292pub async fn miniapp_market_set_favorite (
291293 request : MarketSetFavoriteRequest ,
292294) -> Result < FavoriteAggregate , String > {
293- let mut client = MarketClient :: from_environment ( )
294- . await
295- . map_err ( market_error) ?;
295+ let mut client = market_client ( ) . await ?;
296296 client
297297 . set_favorite ( & request. slug , request. enabled )
298298 . await
@@ -301,19 +301,15 @@ pub async fn miniapp_market_set_favorite(
301301
302302#[ tauri:: command]
303303pub async fn miniapp_market_list_submissions ( ) -> Result < Vec < MarketSubmission > , String > {
304- let mut client = MarketClient :: from_environment ( )
305- . await
306- . map_err ( market_error) ?;
304+ let mut client = market_client ( ) . await ?;
307305 client. list_submissions ( ) . await . map_err ( market_error)
308306}
309307
310308#[ tauri:: command]
311309pub async fn miniapp_market_withdraw_submission (
312310 request : MarketSubmissionIdRequest ,
313311) -> Result < MarketSubmission , String > {
314- let mut client = MarketClient :: from_environment ( )
315- . await
316- . map_err ( market_error) ?;
312+ let mut client = market_client ( ) . await ?;
317313 client
318314 . withdraw_submission ( & request. submission_id )
319315 . await
@@ -397,9 +393,7 @@ pub async fn miniapp_market_install(
397393 state : State < ' _ , AppState > ,
398394 request : MarketInstallRequest ,
399395) -> Result < MarketInstallResult , String > {
400- let mut client = MarketClient :: from_environment ( )
401- . await
402- . map_err ( market_error) ?;
396+ let mut client = market_client ( ) . await ?;
403397 let detail = client. listing ( & request. slug ) . await . map_err ( market_error) ?;
404398 let release = find_release ( & detail, request. release_number ) ?;
405399 validate_minimum_bitfun_version ( & release. min_bitfun_version ) ?;
@@ -588,7 +582,9 @@ pub async fn miniapp_market_capture_window(
588582 . outer_size ( )
589583 . map_err ( |error| format ! ( "Could not read the BitFun window size: {error}" ) ) ?;
590584 if size. width < 320 || size. height < 240 {
591- return Err ( "The BitFun window is too small to capture a review screenshot." . to_string ( ) ) ;
585+ return Err (
586+ "The BitFun window is too small to capture a review screenshot." . to_string ( ) ,
587+ ) ;
592588 }
593589
594590 let capture_dir = app
@@ -649,7 +645,6 @@ pub async fn miniapp_market_capture_window(
649645 {
650646 Err ( "Unable to support the ohos" . to_string ( ) )
651647 }
652-
653648}
654649
655650#[ tauri:: command]
@@ -663,9 +658,7 @@ pub async fn miniapp_market_submit_installed(
663658 . get ( & request. app_id )
664659 . await
665660 . map_err ( |error| error. to_string ( ) ) ?;
666- let mut client = MarketClient :: from_environment ( )
667- . await
668- . map_err ( market_error) ?;
661+ let mut client = market_client ( ) . await ?;
669662 let mut progress = |submission_id : Option < & str > , phase : & ' static str , completed, total| {
670663 emit_upload_progress ( & app, submission_id, phase, completed, total) ;
671664 } ;
0 commit comments