From 542fb0936505a84e7ad8648e8f58abda43eaf5b2 Mon Sep 17 00:00:00 2001 From: kdletters <61648117+kdletters@users.noreply.github.com> Date: Wed, 8 Jul 2026 21:32:51 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8E=A5=E5=85=A5=E5=BE=AE=E4=BF=A1=20Native?= =?UTF-8?q?=20=E5=85=85=E5=80=BC=E4=B8=8E=E8=AE=A2=E5=8D=95=E8=BF=87?= =?UTF-8?q?=E6=9C=9F=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 调整网页端充值渠道,微信内浏览器在开放平台接入前走 Native 支付。 拆分 Native 支付二维码弹窗,展示金额和充值内容并取消无效 code_url 跳转。 修复微信 Native 下单 time_expire 秒级 RFC3339 格式,避免小数秒参数错误。 新增充值订单 5 分钟过期调度,过期前查询微信真实订单状态。 补充微信授权绑定、路由加载恢复和后台表时间显示等配套逻辑。 更新 SpacetimeDB schema、绑定和相关文档测试。 --- .../pages/AdminDatabaseTablesPage.test.tsx | 44 +- .../src/pages/AdminDatabaseTablesPage.tsx | 250 ++++++++-- ...】server-rs与SpacetimeDB数据契约-2026-05-15.md | 12 +- ...【技术方案】微信虚拟支付接入-2026-05-26.md | 3 +- ...项目基线】当前产品与工程约束-2026-05-15.md | 4 +- packages/shared/src/contracts/runtime.ts | 2 + scripts/dev.mjs | 445 ++++++++++++------ scripts/dev.test.ts | 298 ++++++++---- server-rs/crates/api-server/src/app.rs | 164 +++++++ server-rs/crates/api-server/src/main.rs | 3 + .../crates/api-server/src/modules/auth.rs | 10 +- .../src/profile_recharge_expiration_worker.rs | 207 ++++++++ .../crates/api-server/src/runtime_profile.rs | 371 ++++++++++++++- .../crates/api-server/src/wechat/auth.rs | 85 +++- server-rs/crates/api-server/src/wechat/pay.rs | 6 + server-rs/crates/module-auth/src/commands.rs | 7 + server-rs/crates/module-auth/src/domain.rs | 1 + server-rs/crates/module-auth/src/errors.rs | 2 + server-rs/crates/module-auth/src/lib.rs | 109 +++++ .../crates/module-runtime/src/commands.rs | 36 ++ server-rs/crates/module-runtime/src/domain.rs | 51 ++ server-rs/crates/module-runtime/src/errors.rs | 2 + server-rs/crates/platform-wechat/Cargo.toml | 2 +- server-rs/crates/platform-wechat/src/pay.rs | 69 ++- .../crates/shared-contracts/src/runtime.rs | 8 + server-rs/crates/spacetime-client/src/lib.rs | 3 + .../crates/spacetime-client/src/mapper.rs | 2 + .../src/mapper/runtime_profile.rs | 75 +++ .../spacetime-client/src/module_bindings.rs | 64 ++- .../module_bindings/accept_quest_reducer.rs | 16 +- ...al_generation_jobs_and_return_procedure.rs | 16 +- .../acknowledge_quest_completion_reducer.rs | 16 +- ...n_disable_profile_redeem_code_procedure.rs | 16 +- ...n_disable_profile_task_config_procedure.rs | 16 +- ...min_get_profile_wallet_config_procedure.rs | 16 +- ...list_editor_assets_and_return_procedure.rs | 16 +- ...or_showcase_assets_and_return_procedure.rs | 16 +- ...min_list_profile_invite_codes_procedure.rs | 16 +- ...ist_profile_recharge_products_procedure.rs | 16 +- ...min_list_profile_redeem_codes_procedure.rs | 16 +- ...min_list_profile_task_configs_procedure.rs | 16 +- .../admin_list_work_visibility_procedure.rs | 16 +- ...tor_showcase_asset_and_return_procedure.rs | 16 +- .../admin_update_work_visibility_procedure.rs | 16 +- ...in_upsert_profile_invite_code_procedure.rs | 16 +- ...sert_profile_recharge_product_procedure.rs | 16 +- ...in_upsert_profile_redeem_code_procedure.rs | 16 +- ...in_upsert_profile_task_config_procedure.rs | 16 +- ..._upsert_profile_wallet_config_procedure.rs | 16 +- ...vance_puzzle_clear_next_level_procedure.rs | 16 +- .../advance_puzzle_next_level_procedure.rs | 16 +- ...pend_ai_text_chunk_and_return_procedure.rs | 16 +- ...l_novel_runtime_history_entry_procedure.rs | 16 +- ...ssion_ledger_entry_and_return_procedure.rs | 16 +- ...hapter_progression_ledger_entry_reducer.rs | 16 +- .../apply_inventory_mutation_reducer.rs | 16 +- .../apply_quest_signal_reducer.rs | 16 +- ...i_result_reference_and_return_procedure.rs | 16 +- ...e_external_api_key_and_return_procedure.rs | 16 +- ...e_database_migration_operator_procedure.rs | 16 +- ...egin_story_session_and_return_procedure.rs | 16 +- .../begin_story_session_reducer.rs | 16 +- ...t_object_to_entity_and_return_procedure.rs | 16 +- .../bind_asset_object_to_entity_reducer.rs | 16 +- .../cancel_ai_task_and_return_procedure.rs | 16 +- .../checkpoint_wooden_fish_run_procedure.rs | 16 +- ...al_generation_jobs_and_return_procedure.rs | 16 +- ...xpiration_schedule_and_return_procedure.rs | 61 +++ ...rofile_task_reward_and_return_procedure.rs | 16 +- ...uzzle_background_compile_task_procedure.rs | 16 +- ...m_puzzle_work_point_incentive_procedure.rs | 16 +- ...abase_migration_import_chunks_procedure.rs | 16 +- ...orm_browse_history_and_return_procedure.rs | 16 +- .../click_match_3_d_item_procedure.rs | 16 +- ...ile_recharge_order_and_return_procedure.rs | 62 +++ .../compile_big_fish_draft_procedure.rs | 16 +- ...ustom_world_published_profile_procedure.rs | 16 +- .../compile_jump_hop_draft_procedure.rs | 16 +- .../compile_match_3_d_draft_procedure.rs | 16 +- .../compile_puzzle_agent_draft_procedure.rs | 16 +- .../compile_puzzle_clear_draft_procedure.rs | 16 +- .../compile_square_hole_draft_procedure.rs | 16 +- ...ile_visual_novel_work_profile_procedure.rs | 16 +- .../compile_wooden_fish_draft_procedure.rs | 16 +- .../complete_ai_stage_and_return_procedure.rs | 16 +- .../complete_ai_task_and_return_procedure.rs | 16 +- ...nal_generation_job_and_return_procedure.rs | 16 +- ...xpiration_schedule_and_return_procedure.rs | 67 +++ ...nfirm_asset_object_and_return_procedure.rs | 16 +- .../confirm_asset_object_reducer.rs | 16 +- ...file_wallet_points_and_return_procedure.rs | 16 +- .../continue_story_and_return_procedure.rs | 16 +- .../module_bindings/continue_story_reducer.rs | 16 +- .../create_ai_task_and_return_procedure.rs | 16 +- .../module_bindings/create_ai_task_reducer.rs | 16 +- .../create_bark_battle_draft_procedure.rs | 16 +- ...reate_battle_state_and_return_procedure.rs | 16 +- .../create_battle_state_reducer.rs | 16 +- .../create_big_fish_session_procedure.rs | 16 +- ...te_custom_world_agent_session_procedure.rs | 16 +- ...reate_editor_asset_and_return_procedure.rs | 16 +- ...ditor_asset_folder_and_return_procedure.rs | 16 +- ...ate_editor_project_and_return_procedure.rs | 16 +- ...r_project_resource_and_return_procedure.rs | 16 +- ...e_external_api_key_and_return_procedure.rs | 16 +- ...create_jump_hop_agent_session_procedure.rs | 16 +- ...reate_match_3_d_agent_session_procedure.rs | 16 +- ...ile_recharge_order_and_return_procedure.rs | 16 +- .../create_puzzle_agent_session_procedure.rs | 16 +- ...te_puzzle_clear_agent_session_procedure.rs | 16 +- ...ate_square_hole_agent_session_procedure.rs | 16 +- ...te_visual_novel_agent_session_procedure.rs | 16 +- ...ate_wooden_fish_agent_session_procedure.rs | 16 +- .../delete_bark_battle_work_procedure.rs | 16 +- .../delete_big_fish_work_procedure.rs | 16 +- ...te_custom_world_agent_session_procedure.rs | 16 +- ...stom_world_profile_and_return_procedure.rs | 16 +- ...elete_editor_asset_and_return_procedure.rs | 16 +- ...ditor_asset_folder_and_return_procedure.rs | 16 +- ...ete_editor_project_and_return_procedure.rs | 16 +- .../delete_jump_hop_work_procedure.rs | 16 +- .../delete_match_3_d_work_procedure.rs | 16 +- .../delete_puzzle_work_procedure.rs | 16 +- ...e_runtime_snapshot_and_return_procedure.rs | 16 +- .../delete_square_hole_work_procedure.rs | 16 +- .../delete_visual_novel_work_procedure.rs | 16 +- .../delete_wooden_fish_work_procedure.rs | 16 +- .../drag_puzzle_piece_or_group_procedure.rs | 16 +- .../drop_square_hole_shape_procedure.rs | 16 +- ...nal_generation_job_and_return_procedure.rs | 16 +- ...alytics_date_dimension_for_date_reducer.rs | 16 +- ...ute_custom_world_agent_action_procedure.rs | 16 +- ..._store_projection_from_tables_procedure.rs | 16 +- ...rt_database_migration_to_file_procedure.rs | 16 +- .../fail_ai_task_and_return_procedure.rs | 16 +- ...nal_generation_job_and_return_procedure.rs | 16 +- ...e_big_fish_agent_message_turn_procedure.rs | 16 +- ...stom_world_agent_message_turn_procedure.rs | 16 +- ..._match_3_d_agent_message_turn_procedure.rs | 16 +- ...ize_puzzle_agent_message_turn_procedure.rs | 16 +- ...quare_hole_agent_message_turn_procedure.rs | 16 +- ...sual_novel_agent_message_turn_procedure.rs | 16 +- .../finish_bark_battle_run_procedure.rs | 16 +- .../finish_match_3_d_time_up_procedure.rs | 16 +- .../finish_square_hole_time_up_procedure.rs | 16 +- .../finish_wooden_fish_run_procedure.rs | 16 +- .../generate_big_fish_asset_procedure.rs | 16 +- .../get_bark_battle_run_procedure.rs | 16 +- ...et_bark_battle_runtime_config_procedure.rs | 16 +- .../get_battle_state_procedure.rs | 16 +- .../get_big_fish_run_procedure.rs | 16 +- .../get_big_fish_session_procedure.rs | 16 +- .../get_chapter_progression_procedure.rs | 16 +- .../get_creation_entry_config_procedure.rs | 16 +- ...ustom_world_agent_card_detail_procedure.rs | 16 +- ..._custom_world_agent_operation_procedure.rs | 16 +- ...et_custom_world_agent_session_procedure.rs | 16 +- ..._world_gallery_detail_by_code_procedure.rs | 16 +- ...t_custom_world_gallery_detail_procedure.rs | 16 +- ...t_custom_world_library_detail_procedure.rs | 16 +- ...itor_asset_library_and_return_procedure.rs | 16 +- ...get_editor_project_and_return_procedure.rs | 16 +- ...se_campaign_config_and_return_procedure.rs | 16 +- ...nal_generation_job_and_return_procedure.rs | 16 +- ...ration_queue_stats_and_return_procedure.rs | 16 +- .../get_jump_hop_agent_session_procedure.rs | 16 +- .../get_jump_hop_leaderboard_procedure.rs | 16 +- .../get_jump_hop_run_procedure.rs | 16 +- .../get_jump_hop_work_profile_procedure.rs | 16 +- .../get_match_3_d_agent_session_procedure.rs | 16 +- .../get_match_3_d_run_procedure.rs | 16 +- .../get_match_3_d_work_detail_procedure.rs | 16 +- ...player_progression_or_default_procedure.rs | 16 +- .../get_profile_dashboard_procedure.rs | 16 +- .../get_profile_play_stats_procedure.rs | 16 +- .../get_profile_recharge_center_procedure.rs | 16 +- ...ile_recharge_order_and_return_procedure.rs | 16 +- ...rofile_referral_invite_center_procedure.rs | 16 +- .../get_profile_task_center_procedure.rs | 16 +- .../get_puzzle_agent_session_procedure.rs | 16 +- ...et_puzzle_clear_agent_session_procedure.rs | 16 +- .../get_puzzle_clear_runtime_run_procedure.rs | 16 +- ...get_puzzle_clear_work_profile_procedure.rs | 16 +- .../get_puzzle_gallery_detail_procedure.rs | 16 +- .../get_puzzle_run_procedure.rs | 16 +- .../get_puzzle_work_detail_procedure.rs | 16 +- ...ent_editor_project_and_return_procedure.rs | 16 +- .../get_runtime_inventory_state_procedure.rs | 16 +- ...et_runtime_setting_or_default_procedure.rs | 16 +- .../get_runtime_snapshot_procedure.rs | 16 +- ...get_square_hole_agent_session_procedure.rs | 16 +- .../get_square_hole_run_procedure.rs | 16 +- .../get_square_hole_work_detail_procedure.rs | 16 +- .../get_story_session_state_procedure.rs | 16 +- ...et_visual_novel_agent_session_procedure.rs | 16 +- .../get_visual_novel_run_procedure.rs | 16 +- .../get_visual_novel_work_detail_procedure.rs | 16 +- ...get_wooden_fish_agent_session_procedure.rs | 16 +- .../get_wooden_fish_run_procedure.rs | 16 +- .../get_wooden_fish_work_profile_procedure.rs | 16 +- ...er_registration_wallet_reward_procedure.rs | 16 +- ...ression_experience_and_return_procedure.rs | 16 +- ...t_player_progression_experience_reducer.rs | 16 +- ...atabase_migration_from_chunks_procedure.rs | 16 +- ..._database_migration_from_file_procedure.rs | 16 +- ...ation_incremental_from_chunks_procedure.rs | 16 +- ...gration_incremental_from_file_procedure.rs | 16 +- .../jump_hop_jump_procedure.rs | 16 +- ...list_asset_history_and_return_procedure.rs | 16 +- .../list_big_fish_works_procedure.rs | 16 +- ..._custom_world_gallery_entries_procedure.rs | 16 +- .../list_custom_world_profiles_procedure.rs | 16 +- .../list_custom_world_works_procedure.rs | 16 +- ...st_editor_projects_and_return_procedure.rs | 16 +- ..._external_api_keys_and_return_procedure.rs | 16 +- ...al_generation_jobs_and_return_procedure.rs | 16 +- .../list_jump_hop_works_procedure.rs | 16 +- .../list_match_3_d_works_procedure.rs | 16 +- .../list_platform_browse_history_procedure.rs | 16 +- .../list_profile_save_archives_procedure.rs | 16 +- .../list_profile_wallet_ledger_procedure.rs | 16 +- ..._project_resources_and_return_procedure.rs | 16 +- ...or_showcase_assets_and_return_procedure.rs | 16 +- .../list_puzzle_clear_works_procedure.rs | 16 +- .../list_puzzle_gallery_procedure.rs | 16 +- .../list_puzzle_works_procedure.rs | 16 +- .../list_square_hole_works_procedure.rs | 16 +- ..._visual_novel_runtime_history_procedure.rs | 16 +- .../list_visual_novel_works_procedure.rs | 16 +- .../list_wooden_fish_works_procedure.rs | 16 +- ...ase_asset_refunded_and_return_procedure.rs | 16 +- ...echarge_order_paid_and_return_procedure.rs | 16 +- ...rk_puzzle_clear_level_time_up_procedure.rs | 16 +- ...uzzle_draft_generation_failed_procedure.rs | 16 +- ...uzzle_level_generation_failed_procedure.rs | 16 +- ...echarge_order_expiration_schedule_table.rs | 182 +++++++ ...recharge_order_expiration_schedule_type.rs | 77 +++ .../public_work_play_daily_stat_table.rs | 2 +- .../publish_bark_battle_work_procedure.rs | 16 +- .../publish_big_fish_game_procedure.rs | 16 +- ...stom_world_profile_and_return_procedure.rs | 16 +- .../publish_custom_world_profile_reducer.rs | 16 +- .../publish_custom_world_world_procedure.rs | 16 +- .../publish_jump_hop_work_procedure.rs | 16 +- .../publish_match_3_d_work_procedure.rs | 16 +- .../publish_puzzle_clear_work_procedure.rs | 16 +- .../publish_puzzle_work_procedure.rs | 16 +- .../publish_square_hole_work_procedure.rs | 16 +- .../publish_visual_novel_work_procedure.rs | 16 +- .../publish_wooden_fish_work_procedure.rs | 16 +- ...tabase_migration_import_chunk_procedure.rs | 16 +- .../puzzle_clear_gallery_view_table.rs | 2 +- .../puzzle_clear_work_profile_table.rs | 2 +- .../query_analytics_metric_procedure.rs | 16 +- .../record_big_fish_like_procedure.rs | 16 +- .../record_big_fish_play_procedure.rs | 16 +- ...ord_custom_world_profile_like_procedure.rs | 16 +- ...ord_custom_world_profile_play_procedure.rs | 16 +- ...gin_tracking_event_and_return_procedure.rs | 16 +- .../record_puzzle_work_like_procedure.rs | 16 +- ...ord_tracking_event_and_return_procedure.rs | 16 +- ...rd_tracking_events_and_return_procedure.rs | 16 +- ...rd_visual_novel_runtime_event_procedure.rs | 16 +- ..._profile_referral_invite_code_procedure.rs | 16 +- .../redeem_profile_reward_code_procedure.rs | 16 +- ...file_wallet_points_and_return_procedure.rs | 16 +- ...uzzle_background_compile_task_procedure.rs | 16 +- .../remix_big_fish_work_procedure.rs | 16 +- .../remix_custom_world_profile_procedure.rs | 16 +- .../remix_puzzle_work_procedure.rs | 16 +- ...ame_editor_project_and_return_procedure.rs | 16 +- ...neration_job_lease_and_return_procedure.rs | 16 +- ...editor_asset_media_and_return_procedure.rs | 16 +- ...ect_resource_media_and_return_procedure.rs | 16 +- ...olve_combat_action_and_return_procedure.rs | 16 +- .../resolve_combat_action_reducer.rs | 16 +- ...battle_interaction_and_return_procedure.rs | 16 +- ...ve_npc_interaction_and_return_procedure.rs | 16 +- .../resolve_npc_interaction_reducer.rs | 16 +- ..._npc_social_action_and_return_procedure.rs | 16 +- .../resolve_npc_social_action_reducer.rs | 16 +- ...easure_interaction_and_return_procedure.rs | 16 +- .../resolve_treasure_interaction_reducer.rs | 16 +- .../restart_jump_hop_run_procedure.rs | 16 +- .../restart_match_3_d_run_procedure.rs | 16 +- .../restart_square_hole_run_procedure.rs | 16 +- ...ofile_save_archive_and_return_procedure.rs | 16 +- .../retry_puzzle_clear_level_run_procedure.rs | 16 +- ...e_database_migration_operator_procedure.rs | 16 +- ...e_external_api_key_and_return_procedure.rs | 16 +- ...profile_recharge_order_close_input_type.rs | 16 + ...harge_order_expiration_claim_input_type.rs | 18 + ..._expiration_claim_procedure_result_type.rs | 19 + ...ge_order_expiration_complete_input_type.rs | 15 + ...piration_complete_procedure_result_type.rs | 16 + ...order_expiration_schedule_snapshot_type.rs | 21 + ...ave_editor_project_layout_ack_procedure.rs | 16 +- ...tor_project_layout_and_return_procedure.rs | 16 +- .../save_puzzle_form_draft_procedure.rs | 16 +- .../save_puzzle_generated_images_procedure.rs | 16 +- .../save_puzzle_ui_background_procedure.rs | 16 +- .../seed_analytics_date_dimensions_reducer.rs | 16 +- .../select_puzzle_cover_image_procedure.rs | 16 +- .../square_hole_agent_message_table.rs | 2 +- .../square_hole_agent_session_table.rs | 2 +- .../module_bindings/start_ai_task_reducer.rs | 16 +- .../start_ai_task_stage_reducer.rs | 16 +- .../start_bark_battle_run_procedure.rs | 16 +- .../start_big_fish_run_procedure.rs | 16 +- .../start_jump_hop_run_procedure.rs | 16 +- .../start_match_3_d_run_procedure.rs | 16 +- ...tart_puzzle_clear_runtime_run_procedure.rs | 16 +- .../start_puzzle_run_procedure.rs | 16 +- .../start_square_hole_run_procedure.rs | 16 +- .../start_visual_novel_run_procedure.rs | 16 +- .../start_wooden_fish_run_procedure.rs | 16 +- .../stop_match_3_d_run_procedure.rs | 16 +- .../stop_square_hole_run_procedure.rs | 16 +- .../submit_big_fish_input_procedure.rs | 16 +- .../submit_big_fish_message_procedure.rs | 16 +- ...it_custom_world_agent_message_procedure.rs | 16 +- ...tor_showcase_asset_and_return_procedure.rs | 16 +- ...ubmit_match_3_d_agent_message_procedure.rs | 16 +- ...t_profile_feedback_and_return_procedure.rs | 16 +- .../submit_puzzle_agent_message_procedure.rs | 16 +- ...bmit_puzzle_leaderboard_entry_procedure.rs | 16 +- ...mit_square_hole_agent_message_procedure.rs | 16 +- ...it_visual_novel_agent_message_procedure.rs | 16 +- .../swap_puzzle_clear_cards_procedure.rs | 16 +- .../swap_puzzle_pieces_procedure.rs | 16 +- .../sync_auth_store_projection_procedure.rs | 16 +- ...howcase_asset_like_and_return_procedure.rs | 16 +- .../module_bindings/turn_in_quest_reducer.rs | 16 +- ...stom_world_profile_and_return_procedure.rs | 16 +- .../unpublish_custom_world_profile_reducer.rs | 16 +- ...date_bark_battle_draft_config_procedure.rs | 16 +- ...pdate_editor_asset_and_return_procedure.rs | 16 +- ...ditor_asset_folder_and_return_procedure.rs | 16 +- ..._resource_showcase_and_return_procedure.rs | 16 +- ...case_asset_display_and_return_procedure.rs | 16 +- .../update_jump_hop_work_procedure.rs | 16 +- .../update_match_3_d_work_procedure.rs | 16 +- .../update_puzzle_clear_work_procedure.rs | 16 +- .../update_puzzle_run_pause_procedure.rs | 16 +- .../update_puzzle_work_procedure.rs | 16 +- .../update_square_hole_work_procedure.rs | 16 +- .../update_visual_novel_work_procedure.rs | 16 +- .../update_wooden_fish_work_procedure.rs | 16 +- ...hapter_progression_and_return_procedure.rs | 16 +- .../upsert_chapter_progression_reducer.rs | 16 +- ...on_entry_event_banners_config_procedure.rs | 16 +- ...rt_creation_entry_type_config_procedure.rs | 16 +- ...orld_agent_operation_progress_procedure.rs | 16 +- ...stom_world_profile_and_return_procedure.rs | 16 +- .../upsert_custom_world_profile_reducer.rs | 16 +- ...se_campaign_config_and_return_procedure.rs | 16 +- .../upsert_npc_state_and_return_procedure.rs | 16 +- .../upsert_npc_state_reducer.rs | 16 +- ...orm_browse_history_and_return_procedure.rs | 16 +- ...ublic_work_interaction_config_procedure.rs | 16 +- ...rt_runtime_setting_and_return_procedure.rs | 16 +- ...t_runtime_snapshot_and_return_procedure.rs | 16 +- ...ert_visual_novel_run_snapshot_procedure.rs | 16 +- .../use_puzzle_runtime_prop_procedure.rs | 16 +- .../visual_novel_gallery_view_table.rs | 2 +- .../visual_novel_work_profile_table.rs | 2 +- .../wooden_fish_agent_session_table.rs | 2 +- .../crates/spacetime-client/src/runtime.rs | 101 ++++ .../crates/spacetime-module/src/migration.rs | 1 + .../spacetime-module/src/runtime/profile.rs | 250 +++++++++- .../PlatformProfileRechargeModal.test.tsx | 87 +++- .../PlatformProfileRechargeModal.tsx | 276 +++++++---- .../usePlatformProfileCenterController.ts | 173 +++++-- .../RpgEntryHomeView.recharge.test.tsx | 389 ++++++++++++--- src/components/rpg-entry/RpgEntryHomeView.tsx | 139 ++++-- .../rpg-entry/useRpgEntryBootstrap.test.tsx | 93 ++++ .../rpg-entry/useRpgEntryBootstrap.ts | 10 +- src/routing/RouteImageReadyGate.test.ts | 51 ++ src/routing/RouteImageReadyGate.tsx | 38 +- src/services/authService.test.ts | 59 +++ src/services/authService.ts | 21 +- src/services/payment/paymentPlatform.test.ts | 23 +- src/services/payment/paymentPlatform.ts | 68 +-- .../payment/wechatJsapiPayment.test.ts | 85 ++++ src/services/payment/wechatJsapiPayment.ts | 107 +++++ 385 files changed, 6811 insertions(+), 3169 deletions(-) create mode 100644 server-rs/crates/api-server/src/profile_recharge_expiration_worker.rs create mode 100644 server-rs/crates/spacetime-client/src/module_bindings/claim_profile_recharge_order_expiration_schedule_and_return_procedure.rs create mode 100644 server-rs/crates/spacetime-client/src/module_bindings/close_profile_recharge_order_and_return_procedure.rs create mode 100644 server-rs/crates/spacetime-client/src/module_bindings/complete_profile_recharge_order_expiration_schedule_and_return_procedure.rs create mode 100644 server-rs/crates/spacetime-client/src/module_bindings/profile_recharge_order_expiration_schedule_table.rs create mode 100644 server-rs/crates/spacetime-client/src/module_bindings/profile_recharge_order_expiration_schedule_type.rs create mode 100644 server-rs/crates/spacetime-client/src/module_bindings/runtime_profile_recharge_order_close_input_type.rs create mode 100644 server-rs/crates/spacetime-client/src/module_bindings/runtime_profile_recharge_order_expiration_claim_input_type.rs create mode 100644 server-rs/crates/spacetime-client/src/module_bindings/runtime_profile_recharge_order_expiration_claim_procedure_result_type.rs create mode 100644 server-rs/crates/spacetime-client/src/module_bindings/runtime_profile_recharge_order_expiration_complete_input_type.rs create mode 100644 server-rs/crates/spacetime-client/src/module_bindings/runtime_profile_recharge_order_expiration_complete_procedure_result_type.rs create mode 100644 server-rs/crates/spacetime-client/src/module_bindings/runtime_profile_recharge_order_expiration_schedule_snapshot_type.rs create mode 100644 src/components/rpg-entry/useRpgEntryBootstrap.test.tsx create mode 100644 src/services/payment/wechatJsapiPayment.test.ts create mode 100644 src/services/payment/wechatJsapiPayment.ts diff --git a/apps/admin-web/src/pages/AdminDatabaseTablesPage.test.tsx b/apps/admin-web/src/pages/AdminDatabaseTablesPage.test.tsx index 645127aa3..3c2c04cbd 100644 --- a/apps/admin-web/src/pages/AdminDatabaseTablesPage.test.tsx +++ b/apps/admin-web/src/pages/AdminDatabaseTablesPage.test.tsx @@ -1,14 +1,14 @@ /* @vitest-environment jsdom */ -import {render, screen, waitFor} from '@testing-library/react'; +import { render, screen, waitFor } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; -import {beforeEach, expect, test, vi} from 'vitest'; +import { beforeEach, expect, test, vi } from 'vitest'; import { getAdminDatabaseTableRows, getAdminDatabaseTables, } from '../api/adminApiClient'; -import {AdminDatabaseTablesPage} from './AdminDatabaseTablesPage'; +import { AdminDatabaseTablesPage } from './AdminDatabaseTablesPage'; vi.mock('../api/adminApiClient', () => ({ formatAdminApiError: vi.fn((error: unknown) => @@ -36,12 +36,7 @@ beforeEach(() => { invite_code: 'INV-1001', inviter_user_id: 'u-a', }, - raw: [ - 'u-b', - 'u-a', - 'INV-1001', - '2026-05-02T00:00:00Z', - ], + raw: ['u-b', 'u-a', 'INV-1001', '2026-05-02T00:00:00Z'], }, { cells: { @@ -69,32 +64,37 @@ beforeEach(() => { test('后台表查询页支持宽表滚动容器和表头排序', async () => { const user = userEvent.setup(); - const {container} = render( + const { container } = render( , ); await screen.findByText('u-b'); + await screen.findByText('2026-05-02 08:00:00'); const tableWrap = container.querySelector('.admin-table-wrap'); expect(tableWrap?.querySelector('.admin-database-table')).not.toBeNull(); - expect(screen.getByRole('option', {name: '邀请关系(profile_referral_relation)'}).getAttribute('title')).toBe( - '原始表名:profile_referral_relation。邀请关系记录表。', - ); - expect(screen.getByText('已选表:邀请关系(profile_referral_relation)')).toBeTruthy(); - expect(screen.getByRole('heading', {name: '邀请关系'}).getAttribute('title')).toBe( - '原始表名:profile_referral_relation。邀请关系记录表。', - ); - expect(screen.getByRole('button', {name: '被邀请人ID'}).getAttribute('title')).toBe( - '原始字段名:invitee_user_id。被邀请人的用户标识。点击可按此列排序。', - ); + expect( + screen + .getByRole('option', { name: '邀请关系(profile_referral_relation)' }) + .getAttribute('title'), + ).toBe('原始表名:profile_referral_relation。邀请关系记录表。'); + expect( + screen.getByText('已选表:邀请关系(profile_referral_relation)'), + ).toBeTruthy(); + expect( + screen.getByRole('heading', { name: '邀请关系' }).getAttribute('title'), + ).toBe('原始表名:profile_referral_relation。邀请关系记录表。'); + expect( + screen.getByRole('button', { name: '被邀请人ID' }).getAttribute('title'), + ).toBe('原始字段名:invitee_user_id。被邀请人的用户标识。点击可按此列排序。'); expect(readFirstColumnValues(container)).toEqual(['u-b', 'u-a', 'u-c']); - await user.click(screen.getByRole('button', {name: '邀请人ID'})); + await user.click(screen.getByRole('button', { name: '邀请人ID' })); await waitFor(() => { expect(readFirstColumnValues(container)).toEqual(['u-b', 'u-c', 'u-a']); }); - await user.click(screen.getByRole('button', {name: '邀请人ID'})); + await user.click(screen.getByRole('button', { name: '邀请人ID' })); await waitFor(() => { expect(readFirstColumnValues(container)).toEqual(['u-a', 'u-b', 'u-c']); }); diff --git a/apps/admin-web/src/pages/AdminDatabaseTablesPage.tsx b/apps/admin-web/src/pages/AdminDatabaseTablesPage.tsx index cd9d0ea80..88192e2b8 100644 --- a/apps/admin-web/src/pages/AdminDatabaseTablesPage.tsx +++ b/apps/admin-web/src/pages/AdminDatabaseTablesPage.tsx @@ -7,7 +7,7 @@ import { Search, X, } from 'lucide-react'; -import {FormEvent, useEffect, useMemo, useState} from 'react'; +import { FormEvent, useEffect, useMemo, useState } from 'react'; import { getAdminDatabaseTableRows, @@ -17,7 +17,7 @@ import type { AdminDatabaseTableRowPayload, AdminDatabaseTableRowsResponse, } from '../api/adminApiTypes'; -import {handlePageError} from './pageUtils'; +import { handlePageError } from './pageUtils'; interface AdminDatabaseTablesPageProps { token: string; @@ -35,8 +35,11 @@ export function AdminDatabaseTablesPage({ const [search, setSearch] = useState(''); const [filters, setFilters] = useState(''); const [limit, setLimit] = useState('100'); - const [result, setResult] = useState(null); - const [detailRow, setDetailRow] = useState(null); + const [result, setResult] = useState( + null, + ); + const [detailRow, setDetailRow] = + useState(null); const [errorMessage, setErrorMessage] = useState(''); const [copyMessage, setCopyMessage] = useState(''); const [sortColumn, setSortColumn] = useState(''); @@ -90,7 +93,9 @@ export function AdminDatabaseTablesPage({ const tableOptions = useMemo(() => { const optionNames = - tableName && !tables.includes(tableName) ? [tableName, ...tables] : tables; + tableName && !tables.includes(tableName) + ? [tableName, ...tables] + : tables; return optionNames.map(getDatabaseTableHeader); }, [tableName, tables]); @@ -119,7 +124,7 @@ export function AdminDatabaseTablesPage({ } return [...rows] - .map((row, index) => ({index, row})) + .map((row, index) => ({ index, row })) .sort((left, right) => { const comparison = compareTableCellValues( left.row.cells[sortColumn], @@ -131,7 +136,7 @@ export function AdminDatabaseTablesPage({ } return left.index - right.index; }) - .map(({row}) => row); + .map(({ row }) => row); }, [result, sortColumn, sortDirection, visibleColumns]); async function loadTables() { @@ -168,11 +173,15 @@ export function AdminDatabaseTablesPage({ setIsLoadingRows(true); setErrorMessage(''); try { - const response = await getAdminDatabaseTableRows(token, normalizedTableName, { - search: querySearch, - filters: queryFilters, - limit: parseLimit(queryLimit), - }); + const response = await getAdminDatabaseTableRows( + token, + normalizedTableName, + { + search: querySearch, + filters: queryFilters, + limit: parseLimit(queryLimit), + }, + ); setResult(response); setCopyMessage(''); } catch (error: unknown) { @@ -199,7 +208,7 @@ export function AdminDatabaseTablesPage({ setSearch(''); setFilters(''); setLimit('100'); - void refreshRows(tableName, {search: '', filters: '', limit: '100'}); + void refreshRows(tableName, { search: '', filters: '', limit: '100' }); } function handleSortColumn(column: string) { @@ -219,7 +228,11 @@ export function AdminDatabaseTablesPage({ return; } - const copiedText = JSON.stringify(detailRow.raw ?? detailRow.cells, null, 2); + const copiedText = JSON.stringify( + detailRow.raw ?? detailRow.cells, + null, + 2, + ); try { await navigator.clipboard.writeText(copiedText); setCopyMessage('已复制 JSON'); @@ -265,7 +278,7 @@ export function AdminDatabaseTablesPage({ value={tableName} onChange={(event) => handleTableChange(event.target.value)} > - {tableOptions.map(({name, optionLabel, description}) => ( + {tableOptions.map(({ name, optionLabel, description }) => ( @@ -296,7 +309,11 @@ export function AdminDatabaseTablesPage({ onChange={(event) => setLimit(event.target.value)} /> - @@ -327,14 +344,16 @@ export function AdminDatabaseTablesPage({
-

{resultTableHeader.label}

+

+ {resultTableHeader.label} +

{result?.totalReturned ?? 0} 条
- {columnHeaders.map(({column, label, description}) => { + {columnHeaders.map(({ column, label, description }) => { const isSorted = sortColumn === column; return ( + )} @@ -419,7 +443,11 @@ export function AdminDatabaseTablesPage({ {detailRow ? (
-
+

行详情

@@ -440,7 +468,9 @@ export function AdminDatabaseTablesPage({
- {copyMessage ?
{copyMessage}
: null} + {copyMessage ? ( +
{copyMessage}
+ ) : null}
               {JSON.stringify(detailRow.raw ?? detailRow.cells, null, 2)}
             
@@ -457,7 +487,9 @@ function readHashTableName() { if (queryIndex < 0) { return ''; } - return new URLSearchParams(hash.slice(queryIndex + 1)).get('table')?.trim() ?? ''; + return ( + new URLSearchParams(hash.slice(queryIndex + 1)).get('table')?.trim() ?? '' + ); } function parseLimit(value: string) { @@ -501,7 +533,10 @@ function getDatabaseTableLabel(tableName: string) { } function getDatabaseTableDescription(tableName: string, label: string) { - return databaseTableDescriptionMap[tableName] ?? `当前 SpacetimeDB 中的 ${label} 表`; + return ( + databaseTableDescriptionMap[tableName] ?? + `当前 SpacetimeDB 中的 ${label} 表` + ); } function getDatabaseTableColumnHeader(tableName: string, column: string) { @@ -512,7 +547,7 @@ function getDatabaseTableColumnHeader(tableName: string, column: string) { normalizedColumn, label, ); - return {column: normalizedColumn, label, description}; + return { column: normalizedColumn, label, description }; } function getDatabaseTableColumnLabel(column: string) { @@ -541,8 +576,7 @@ function getDatabaseTableColumnDescription( ) { const exactDescription = databaseTableColumnDescriptionMap[column]; const description = - exactDescription ?? - `当前表 ${tableName || '未知'} 中的 ${label} 字段`; + exactDescription ?? `当前表 ${tableName || '未知'} 中的 ${label} 字段`; return `原始字段名:${column}。${description}。点击可按此列排序。`; } @@ -566,7 +600,9 @@ function compareTableCellValues( } if (left.kind !== right.kind) { - return direction * (getSortKindOrder(left.kind) - getSortKindOrder(right.kind)); + return ( + direction * (getSortKindOrder(left.kind) - getSortKindOrder(right.kind)) + ); } let comparison = 0; @@ -578,7 +614,10 @@ function compareTableCellValues( comparison = Number(left.value) - Number(getSortableBooleanValue(right)); break; case 'text': - comparison = tableSortCollator.compare(left.value, getSortableTextValue(right)); + comparison = tableSortCollator.compare( + left.value, + getSortableTextValue(right), + ); break; } @@ -587,26 +626,26 @@ function compareTableCellValues( function normalizeTableCellSortValue(value: unknown): SortableTableCellValue { if (value === null || typeof value === 'undefined' || value === '') { - return {kind: 'empty'}; + return { kind: 'empty' }; } if (typeof value === 'number' && Number.isFinite(value)) { - return {kind: 'number', value}; + return { kind: 'number', value }; } if (typeof value === 'boolean') { - return {kind: 'boolean', value}; + return { kind: 'boolean', value }; } if (typeof value === 'string') { const trimmed = value.trim(); if (!trimmed) { - return {kind: 'empty'}; + return { kind: 'empty' }; } - return {kind: 'text', value: trimmed}; + return { kind: 'text', value: trimmed }; } - return {kind: 'text', value: stringifyUnknownValue(value)}; + return { kind: 'text', value: stringifyUnknownValue(value) }; } function buildRowKey(row: AdminDatabaseTableRowPayload, rowIndex: number) { @@ -614,13 +653,24 @@ function buildRowKey(row: AdminDatabaseTableRowPayload, rowIndex: number) { return `${rowIndex}-${String(firstValue ?? '')}`; } -function formatCellValue(value: unknown): FormattedTableCellValue { +function formatCellValue(value: unknown, column = ''): FormattedTableCellValue { if (value === null || typeof value === 'undefined' || value === '') { - return {content: '-', fullText: '-'}; + return { content: '-', fullText: '-' }; } - if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') { + if ( + typeof value === 'string' || + typeof value === 'number' || + typeof value === 'boolean' + ) { const text = String(value); - return {content: text, fullText: text}; + const readableTimestamp = formatReadableTimestampValue(value, column); + if (readableTimestamp) { + return { + content: readableTimestamp, + fullText: `${readableTimestamp}(原始值:${text})`, + }; + } + return { content: text, fullText: text }; } return { content: stringifyUnknownValue(value), @@ -628,6 +678,107 @@ function formatCellValue(value: unknown): FormattedTableCellValue { }; } +function formatReadableTimestampValue( + value: string | number | boolean, + column: string, +) { + if (typeof value === 'boolean' || !isTimestampColumn(column)) { + return ''; + } + + const timestampMs = parseTimestampMillis(value, column); + if (timestampMs === null) { + return ''; + } + + const date = new Date(timestampMs); + if (Number.isNaN(date.getTime())) { + return ''; + } + + return formatBeijingDateTime(date); +} + +function isTimestampColumn(column: string) { + const normalizedColumn = column.trim().toLowerCase(); + return ( + normalizedColumn.endsWith('_at') || + normalizedColumn.endsWith('_at_ms') || + normalizedColumn.endsWith('_at_micros') || + normalizedColumn.endsWith('_timestamp') || + normalizedColumn.endsWith('_timestamp_ms') || + normalizedColumn.endsWith('_timestamp_micros') + ); +} + +function parseTimestampMillis(value: string | number, column: string) { + if (typeof value === 'number') { + return parseNumericTimestampMillis(value, column); + } + + const trimmed = value.trim(); + if (!trimmed) { + return null; + } + + const numericValue = Number(trimmed); + if (Number.isFinite(numericValue) && /^-?\d+(\.\d+)?$/.test(trimmed)) { + return parseNumericTimestampMillis(numericValue, column); + } + + const parsed = Date.parse(trimmed); + return Number.isNaN(parsed) ? null : parsed; +} + +function parseNumericTimestampMillis(value: number, column: string) { + if (!Number.isFinite(value) || value <= 0) { + return null; + } + + const normalizedColumn = column.trim().toLowerCase(); + if ( + normalizedColumn.endsWith('_at_ms') || + normalizedColumn.endsWith('_timestamp_ms') + ) { + return value; + } + if ( + normalizedColumn.endsWith('_at_micros') || + normalizedColumn.endsWith('_timestamp_micros') + ) { + return Math.floor(value / 1_000); + } + + if (value >= 1_000_000_000_000_000) { + return Math.floor(value / 1_000); + } + if (value >= 1_000_000_000_000) { + return value; + } + if (value >= 1_000_000_000) { + return value * 1_000; + } + + return null; +} + +function formatBeijingDateTime(date: Date) { + const parts = new Intl.DateTimeFormat('zh-CN', { + day: '2-digit', + hour: '2-digit', + hourCycle: 'h23', + minute: '2-digit', + month: '2-digit', + second: '2-digit', + timeZone: 'Asia/Shanghai', + year: 'numeric', + }).formatToParts(date); + const partMap = Object.fromEntries( + parts.map((part) => [part.type, part.value]), + ); + return `${partMap.year}-${partMap.month}-${partMap.day} ${partMap.hour}:${partMap.minute}:${partMap.second}`; +} + function stringifyPrettyUnknownValue(value: unknown) { try { const serialized = JSON.stringify(value, null, 2); @@ -662,10 +813,10 @@ function getSortKindOrder(kind: SortableTableCellValue['kind']): number { } type SortableTableCellValue = - | {kind: 'empty'} - | {kind: 'number'; value: number} - | {kind: 'boolean'; value: boolean} - | {kind: 'text'; value: string}; + | { kind: 'empty' } + | { kind: 'number'; value: number } + | { kind: 'boolean'; value: boolean } + | { kind: 'text'; value: string }; interface DatabaseTableHeader { name: string; @@ -1257,7 +1408,8 @@ const databaseTableLabelMap: Record = { }; const databaseTableDescriptionMap: Record = { - database_migration_operator: '管理数据库迁移导出、导入和增量导入权限的操作员表', + database_migration_operator: + '管理数据库迁移导出、导入和增量导入权限的操作员表', database_migration_import_chunk: '大迁移 JSON 分片导入的临时表', auth_store_snapshot: '旧认证仓储的整份 JSON 快照表', user_account: '用户账号主表', @@ -1347,23 +1499,25 @@ function getSortableBooleanValue(value: SortableTableCellValue) { } function getSortableTextValue(value: SortableTableCellValue) { - return isSortableTextValue(value) ? value.value : stringifyUnknownValue(value); + return isSortableTextValue(value) + ? value.value + : stringifyUnknownValue(value); } function isSortableNumberValue( value: SortableTableCellValue, -): value is Extract { +): value is Extract { return value.kind === 'number'; } function isSortableBooleanValue( value: SortableTableCellValue, -): value is Extract { +): value is Extract { return value.kind === 'boolean'; } function isSortableTextValue( value: SortableTableCellValue, -): value is Extract { +): value is Extract { return value.kind === 'text'; } diff --git a/docs/【后端架构】server-rs与SpacetimeDB数据契约-2026-05-15.md b/docs/【后端架构】server-rs与SpacetimeDB数据契约-2026-05-15.md index e4cfbf736..2e84c0168 100644 --- a/docs/【后端架构】server-rs与SpacetimeDB数据契约-2026-05-15.md +++ b/docs/【后端架构】server-rs与SpacetimeDB数据契约-2026-05-15.md @@ -192,9 +192,11 @@ npm run check:server-rs-ddd 3. 充值中心、下单校验和支付确认入账都读取 `profile_recharge_product_config`。历史订单保留下单时写入的商品标题、金额、渠道、状态和 provider transaction id,不随配置改动回写。 4. 泥点首充资格按 `user_id + product_id` 的历史 `paid` 订单独立判断。某个档位已支付后,只隐藏该档位的首充赠送;其它未购买档位仍展示和结算首充赠送。 5. `hasPointsRecharged` 只保留为账号是否发生过任一泥点充值的兼容字段,不得驱动所有商品展示隐藏或结算金额计算。前端只渲染后端返回的商品快照。 -6. `paymentChannel` 缺失、未知或和设备不匹配时必须拒绝;真实微信渠道只允许 `wechat_mp`、`wechat_h5`、`wechat_native`,生产配置不得把真实支付静默降级为 `mock`。 -7. access JWT 只携带最小设备快照 `device.client_type`、`device.client_runtime`、`device.client_platform`。充值下单按该快照拦截渠道:小程序只允许 `wechat_mp`,手机微信内网页只允许 `wechat_h5`,桌面微信内网页只允许 `wechat_native`。 +6. `paymentChannel` 缺失、未知或冒用小程序支付设备时必须拒绝;真实微信渠道只允许 `wechat_mp`、`wechat_mp_virtual`、`wechat_jsapi`、`wechat_h5`、`wechat_native`,生产配置不得把真实支付静默降级为 `mock`。 +7. access JWT 只携带最小设备快照 `device.client_type`、`device.client_runtime`、`device.client_platform`。充值下单按该快照拦截小程序渠道:小程序只允许 `wechat_mp` / `wechat_mp_virtual`;微信内浏览器使用 `wechat_jsapi`;普通 Web 使用 `wechat_native`,历史普通 Web 登录态若缺少设备快照也允许继续进入 JSAPI / H5 / Native 渠道的后续支付配置校验,但不放宽小程序虚拟支付。 8. 所有微信真实渠道都以微信支付通知或服务端查单确认 `SUCCESS` 为到账事实;小程序、H5 跳转和 Native 二维码返回都不能直接发放泥点或会员。 +9. 微信 Native 下单显式传 `time_expire`,当前有效期为 5 分钟,并通过 `wechatNativePayment.expiresAt` 下发给前端二维码弹窗展示。 +10. 普通微信支付渠道的新建 pending 充值订单会写入 `profile_recharge_order_expiration_schedule`。到期处理由 `api-server` 后台 worker claim 调度行后调用微信查单;只有微信返回 `SUCCESS` 才补确认入账,返回 `NOTPAY` / `CLOSED` / `REVOKED` / `PAYERROR` 才关闭本地订单,查询失败或 `USERPAYING` 保留租约等待重试。SpacetimeDB module 不直接发起微信 HTTP 请求。 ## 创作入口泥点扣费契约 @@ -695,6 +697,12 @@ npm run check:server-rs-ddd - Rust 结构体:`ProfileRechargeOrder` - 源码:`server-rs/crates/spacetime-module/src/runtime/profile.rs` +### `profile_recharge_order_expiration_schedule` + +- Rust 结构体:`ProfileRechargeOrderExpirationSchedule` +- 源码:`server-rs/crates/spacetime-module/src/runtime/profile.rs` +- 作用:普通微信充值订单的到期查单调度表。表内只保存待检查订单、计划检查时间和 worker 短租约;支付成功或本地关闭后删除对应行。 + ### `profile_redeem_code` - Rust 结构体:`ProfileRedeemCode` diff --git a/docs/【技术方案】微信虚拟支付接入-2026-05-26.md b/docs/【技术方案】微信虚拟支付接入-2026-05-26.md index 61057acd3..1cd3fcf81 100644 --- a/docs/【技术方案】微信虚拟支付接入-2026-05-26.md +++ b/docs/【技术方案】微信虚拟支付接入-2026-05-26.md @@ -6,13 +6,14 @@ - 泥点充值在微信小程序 WebView 内走 `wechat_mp_virtual`,由小程序页调用 `wx.requestVirtualPayment` 的 `short_series_coin` 模式。 - 会员商品在微信小程序 WebView 内同样走 `wechat_mp_virtual`,由小程序页调用 `wx.requestVirtualPayment` 的 `short_series_goods` 模式,并在 `signData` 内带 `productId` 与 `goodsPrice`。 -- H5 与桌面微信环境仍分别走 `wechat_h5` / `wechat_native`,不进入虚拟支付链路。 +- 微信内浏览器走 `wechat_jsapi`,复用微信支付 V3 JSAPI 下单返回的预支付参数并通过 `WeixinJSBridge.invoke('getBrandWCPayRequest')` 调起支付;普通 Web 统一走 `wechat_native` 二维码支付,不进入虚拟支付链路,也不依赖 H5 产品权限。`wechat_h5` 仅作为未来 H5 产品权限明确开通后的保留渠道。 - `session_key` 只保存在后端认证仓储内,用于计算虚拟支付用户态签名,不下发给前端。 - 客户端支付成功回调只代表已拉起支付并返回成功;最终到账仍以后端虚拟支付消息推送写入订单为准,普通微信支付订单则继续走微信支付 V3 notify / query。虚拟支付订单的确认接口只读取本地订单真相,不再用普通微信支付 V3 查单。 - 小程序 WebView 普通进入不预登录;H5 触发受保护入口或支付前必须保留 `clientRuntime=wechat_mini_program` 等宿主上下文,并用 `MicroMessenger + miniProgram` User-Agent 兜底识别首点 bridge 未就绪场景,再跳转小程序原生授权态,确保后端拿到带 `session_key` 的微信登录态。 ## 关键文件 +- JSAPI 支付缺少当前用户 openid 时,前端调用 `GET /api/auth/wechat/bind-start` 发起 OAuth;后端把当前 `user_id` 写入 OAuth state,微信回调仍走 `/api/auth/wechat/callback`,但只把获得的微信身份绑定到当前账号,不走普通 `/api/auth/wechat/start` 的登录/切号流程。 - 前端渠道选择:`src/services/payment/paymentPlatform.ts` - 充值入口:`src/components/rpg-entry/RpgEntryHomeView.tsx` - 小程序支付承接页:`miniprogram/pages/wechat-pay/index.shared.js` diff --git a/docs/【项目基线】当前产品与工程约束-2026-05-15.md b/docs/【项目基线】当前产品与工程约束-2026-05-15.md index 13628c52b..8f6ad684c 100644 --- a/docs/【项目基线】当前产品与工程约束-2026-05-15.md +++ b/docs/【项目基线】当前产品与工程约束-2026-05-15.md @@ -60,8 +60,8 @@ Genarrative / 陶泥儿是一个 AI 原生互动内容与小游戏平台。当 2. 泥点默认档位为 `60 / 180 / 300 / 680 / 1280 / 3280`,会员默认档位为月卡、季卡、年卡;实际展示、下单校验和支付确认都以后端返回的充值商品配置为准。 3. 首充双倍按泥点商品档位独立计算。用户买过 `points_60` 后,只影响 `points_60` 的首充展示和结算,其它未购买档位仍保留各自首充权益。 4. 前端不得用 `hasPointsRecharged` 统一隐藏所有泥点档位首充权益;该字段只表示账号是否发生过任一泥点充值。 -5. 充值支付渠道只允许由设备平台隔离层解析为 `wechat_mp`、`wechat_h5` 或 `wechat_native`;生产真实支付不得默认落到 `mock`,缺失或未知 `paymentChannel` 必须拒绝。 -6. 小程序 WebView 充值使用 `wechat_mp` 渠道时,H5 只跳转 native 支付页并在返回后请求服务端查单确认;手机微信内网页使用 `wechat_h5` 跳转微信 H5 支付;桌面微信内网页使用 `wechat_native` 二维码。只有微信通知或查单确认 `SUCCESS` 后才刷新余额或会员状态。 +5. 充值支付渠道只允许由设备平台隔离层解析为 `wechat_mp`、`wechat_mp_virtual`、`wechat_jsapi`、`wechat_h5` 或 `wechat_native`;生产真实支付不得默认落到 `mock`,缺失或未知 `paymentChannel` 必须拒绝。 +6. 小程序 WebView 充值使用 `wechat_mp_virtual` 调起小程序虚拟支付;微信内浏览器使用 `wechat_jsapi` 调起微信支付 JSAPI;普通 Web 使用 `wechat_native` 二维码支付,避免因移动 UA、触控能力或窄屏误入 `wechat_h5`。只有微信通知或查单确认 `SUCCESS` 后才刷新余额或会员状态。 7. 后端必须按 access JWT 中的最小设备快照拦截真实微信充值路径,不能只依赖前端隐藏入口或请求体传入的 `paymentChannel`。 8. 后台“充值商品”页维护泥点和会员商品配置,保存后影响新的充值中心快照、下单和支付确认;历史订单保留下单时快照。 diff --git a/packages/shared/src/contracts/runtime.ts b/packages/shared/src/contracts/runtime.ts index 6ce790428..94a4bb030 100644 --- a/packages/shared/src/contracts/runtime.ts +++ b/packages/shared/src/contracts/runtime.ts @@ -164,6 +164,7 @@ export type ProfileRechargeCenterResponse = { }; export type WechatMiniProgramPayParams = { + appId?: string; timeStamp: string; nonceStr: string; package: string; @@ -184,6 +185,7 @@ export type WechatH5Payment = { export type WechatNativePayment = { codeUrl: string; + expiresAt: string; }; export type CreateProfileRechargeOrderRequest = { diff --git a/scripts/dev.mjs b/scripts/dev.mjs index 169ec23f6..befbe0be6 100644 --- a/scripts/dev.mjs +++ b/scripts/dev.mjs @@ -1,5 +1,5 @@ -import {spawn, spawnSync} from 'node:child_process'; -import {randomBytes} from 'node:crypto'; +import { spawn, spawnSync } from 'node:child_process'; +import { randomBytes } from 'node:crypto'; import { createWriteStream, existsSync, @@ -11,9 +11,9 @@ import { watch, writeFileSync, } from 'node:fs'; -import {basename, join, relative, resolve} from 'node:path'; -import {createInterface} from 'node:readline'; -import {fileURLToPath} from 'node:url'; +import { basename, join, relative, resolve } from 'node:path'; +import { createInterface } from 'node:readline'; +import { fileURLToPath } from 'node:url'; import { formatPortDecision, @@ -39,7 +39,10 @@ const modulePath = resolve(serverRsDir, 'crates/spacetime-module'); const viteCliPath = resolve(repoRoot, 'scripts/vite-cli.mjs'); const adminWebDir = resolve(repoRoot, 'apps/admin-web'); -function resolveLocalGenarrativeFfmpeg(env = process.env, platform = process.platform) { +function resolveLocalGenarrativeFfmpeg( + env = process.env, + platform = process.platform, +) { if (platform !== 'win32') { return null; } @@ -60,7 +63,7 @@ function resolveLocalGenarrativeFfmpeg(env = process.env, platform = process.pla return null; } - return {binDir, ffmpegPath, ffprobePath}; + return { binDir, ffmpegPath, ffprobePath }; } function resolvePathEnvKey(env, platform = process.platform) { @@ -206,7 +209,9 @@ function parseArgs(argv, baseEnv) { spacetimeHost: env.SPACETIME_HOST || '127.0.0.1', spacetimePort: normalizePort(env.SPACETIME_PORT, 3101), spacetimeDataDir: resolve(serverRsDir, '.spacetimedb/local/data'), - spacetimeServerUrl: String(env.GENARRATIVE_SPACETIME_SERVER_URL ?? '').trim(), + spacetimeServerUrl: String( + env.GENARRATIVE_SPACETIME_SERVER_URL ?? '', + ).trim(), portRangeSpec: String(env.GENARRATIVE_DEV_PORT_RANGE ?? '').trim(), database: readLocalSpacetimeDatabase() || @@ -275,7 +280,10 @@ function parseArgs(argv, baseEnv) { explicitOptions.add('spacetimeHost'); break; case '--spacetime-port': - options.spacetimePort = normalizePort(readValue(), options.spacetimePort); + options.spacetimePort = normalizePort( + readValue(), + options.spacetimePort, + ); options.spacetimeServerUrl = ''; explicitOptions.add('spacetimePort'); break; @@ -339,7 +347,7 @@ function parseArgs(argv, baseEnv) { throw new Error('--api-timeout-seconds 必须是数字'); } - return {command, explicitOptions, options}; + return { command, explicitOptions, options }; } function normalizeServiceName(rawName) { @@ -400,7 +408,8 @@ function buildDevStackServiceSnapshot(runner, serviceName, updatedAt) { host: runtime.host ?? endpoint.host, port: runtime.port ?? endpoint.port, url: runtime.url ?? endpoint.url, - command: runtime.command ?? resolveDevStackServiceCommand(runner, serviceName), + command: + runtime.command ?? resolveDevStackServiceCommand(runner, serviceName), startedAt: runtime.startedAt ?? null, updatedAt: runtime.updatedAt ?? updatedAt, exitCode: runtime.exitCode ?? null, @@ -409,7 +418,7 @@ function buildDevStackServiceSnapshot(runner, serviceName, updatedAt) { } function resolveDevStackServiceEndpoint(runner, serviceName) { - const {options, state} = runner; + const { options, state } = runner; switch (serviceName) { case 'spacetime': return { @@ -445,7 +454,7 @@ function resolveDevStackServiceEndpoint(runner, serviceName) { } function resolveDevStackServiceCommand(runner, serviceName) { - const {options, state} = runner; + const { options, state } = runner; switch (serviceName) { case 'spacetime': return state.spacetimeReused @@ -505,12 +514,14 @@ function isSccacheRustcWrapper(value) { } function buildLocalRustProcessEnv(env, options = {}) { - const mergedEnv = {...env}; + const mergedEnv = { ...env }; const wrappers = [ String(mergedEnv.RUSTC_WRAPPER ?? '').trim(), String(mergedEnv.CARGO_BUILD_RUSTC_WRAPPER ?? '').trim(), ].filter(Boolean); - const customWrapper = wrappers.find((wrapper) => !isSccacheRustcWrapper(wrapper)); + const customWrapper = wrappers.find( + (wrapper) => !isSccacheRustcWrapper(wrapper), + ); if (customWrapper) { mergedEnv.RUSTC_WRAPPER = customWrapper; mergedEnv.CARGO_BUILD_RUSTC_WRAPPER = customWrapper; @@ -530,9 +541,10 @@ function buildLocalRustProcessEnv(env, options = {}) { function readWorkspaceSpacetimeVersion() { const manifestText = readFileSync(manifestPath, 'utf8'); - const match = /^spacetimedb\s*=\s*(?:"([^"]+)"|\{[^}]*version\s*=\s*"([^"]+)")/mu.exec( - manifestText, - ); + const match = + /^spacetimedb\s*=\s*(?:"([^"]+)"|\{[^}]*version\s*=\s*"([^"]+)")/mu.exec( + manifestText, + ); const version = match?.[1] ?? match?.[2] ?? ''; if (!version) { throw new Error('无法从 server-rs/Cargo.toml 读取 spacetimedb 版本'); @@ -545,7 +557,9 @@ function normalizeCargoVersionRequirement(version) { } function parseSpacetimeToolVersion(output) { - const match = /spacetimedb tool version\s+([0-9]+\.[0-9]+\.[0-9]+)/u.exec(output); + const match = /spacetimedb tool version\s+([0-9]+\.[0-9]+\.[0-9]+)/u.exec( + output, + ); return match?.[1] ?? ''; } @@ -627,12 +641,19 @@ function ensureSpacetimeToolVersionMatchesWorkspace() { function ensureRequiredFiles(command) { const requiredFiles = []; - if (command === 'api-server' || command === 'spacetime' || command === 'all') { + if ( + command === 'api-server' || + command === 'spacetime' || + command === 'all' + ) { requiredFiles.push([manifestPath, 'server-rs/Cargo.toml']); } if (command === 'spacetime' || command === 'all') { - requiredFiles.push([resolve(modulePath, 'Cargo.toml'), 'spacetime-module Cargo.toml']); + requiredFiles.push([ + resolve(modulePath, 'Cargo.toml'), + 'spacetime-module Cargo.toml', + ]); } if (command === 'web' || command === 'admin-web' || command === 'all') { @@ -640,7 +661,10 @@ function ensureRequiredFiles(command) { } if (command === 'admin-web' || command === 'all') { - requiredFiles.push([resolve(adminWebDir, 'package.json'), 'apps/admin-web/package.json']); + requiredFiles.push([ + resolve(adminWebDir, 'package.json'), + 'apps/admin-web/package.json', + ]); } for (const [path, label] of requiredFiles) { @@ -689,11 +713,15 @@ class DevService { return; } - this.updateRuntimeState({status: 'starting', exitCode: null, signal: null}); + this.updateRuntimeState({ + status: 'starting', + exitCode: null, + signal: null, + }); try { await this.startFn(this); } catch (error) { - this.updateRuntimeState({status: 'failed', pid: null}); + this.updateRuntimeState({ status: 'failed', pid: null }); throw error; } } @@ -738,7 +766,7 @@ class DevService { const processes = [this.child, ...this.children].filter(Boolean); this.stopping = processes.length > 0; if (processes.length > 0) { - this.updateRuntimeState({status: 'stopping'}); + this.updateRuntimeState({ status: 'stopping' }); } this.child = null; this.children = []; @@ -753,7 +781,7 @@ class DevService { this.logStream = null; this.stopping = false; if (processes.length > 0) { - this.updateRuntimeState({status: 'stopped', pid: null}); + this.updateRuntimeState({ status: 'stopped', pid: null }); } } @@ -772,7 +800,9 @@ class DevService { await this.restart(); } catch (error) { - console.error(`[dev:${this.name}] ${actionLabel}失败: ${error.message}`); + console.error( + `[dev:${this.name}] ${actionLabel}失败: ${error.message}`, + ); } }, delayMs); } @@ -858,7 +888,10 @@ function isStaleExternalGenerationWorkerProcess({ if (env.GENARRATIVE_PROCESS_ROLE !== 'external-generation-worker') { return false; } - if (String(env.GENARRATIVE_SPACETIME_SERVER_URL ?? '') !== expectedSpacetimeServer) { + if ( + String(env.GENARRATIVE_SPACETIME_SERVER_URL ?? '') !== + expectedSpacetimeServer + ) { return false; } if (String(env.GENARRATIVE_SPACETIME_DATABASE ?? '') !== expectedDatabase) { @@ -941,7 +974,9 @@ async function stopLinuxProcessId(pid, label) { if (error?.code === 'ESRCH') { return true; } - console.warn(`[dev:${label}] 强制停止旧进程失败 pid=${pid}: ${error.message}`); + console.warn( + `[dev:${label}] 强制停止旧进程失败 pid=${pid}: ${error.message}`, + ); return false; } return waitForLinuxProcessExit(pid, 1000); @@ -961,7 +996,10 @@ async function stopStaleLocalExternalGenerationWorkers({ return []; } - const expectedExePath = resolve(repoRootPath, 'server-rs/target/debug/api-server'); + const expectedExePath = resolve( + repoRootPath, + 'server-rs/target/debug/api-server', + ); const stopped = []; for (const pid of listLinuxProcessIds()) { const snapshot = readLinuxApiServerProcessSnapshot(pid); @@ -999,48 +1037,52 @@ function stopWindowsProcessTree(pid) { return; } - spawnSync('powershell.exe', [ - '-NoProfile', - '-ExecutionPolicy', - 'Bypass', - '-Command', + spawnSync( + 'powershell.exe', [ - '$ErrorActionPreference = "SilentlyContinue"', - '$root = [int]$env:GENARRATIVE_STOP_PID', - '$all = Get-CimInstance Win32_Process', - '$childrenByParent = @{}', - 'foreach ($process in $all) {', - ' $parent = [int]$process.ParentProcessId', - ' if (-not $childrenByParent.ContainsKey($parent)) { $childrenByParent[$parent] = @() }', - ' $childrenByParent[$parent] += [int]$process.ProcessId', - '}', - '$toStop = New-Object System.Collections.Generic.List[int]', - '$queue = New-Object System.Collections.Generic.Queue[int]', - '$queue.Enqueue($root)', - 'while ($queue.Count -gt 0) {', - ' $current = $queue.Dequeue()', - ' $toStop.Add($current)', - ' if ($childrenByParent.ContainsKey($current)) {', - ' foreach ($child in $childrenByParent[$current]) { $queue.Enqueue($child) }', - ' }', - '}', - 'foreach ($id in ($toStop | Select-Object -Unique | Sort-Object -Descending)) {', - ' Stop-Process -Id $id -Force -ErrorAction SilentlyContinue', - '}', - ].join('\n'), - ], { - env: { - ...process.env, - GENARRATIVE_STOP_PID: String(pid), + '-NoProfile', + '-ExecutionPolicy', + 'Bypass', + '-Command', + [ + '$ErrorActionPreference = "SilentlyContinue"', + '$root = [int]$env:GENARRATIVE_STOP_PID', + '$all = Get-CimInstance Win32_Process', + '$childrenByParent = @{}', + 'foreach ($process in $all) {', + ' $parent = [int]$process.ParentProcessId', + ' if (-not $childrenByParent.ContainsKey($parent)) { $childrenByParent[$parent] = @() }', + ' $childrenByParent[$parent] += [int]$process.ProcessId', + '}', + '$toStop = New-Object System.Collections.Generic.List[int]', + '$queue = New-Object System.Collections.Generic.Queue[int]', + '$queue.Enqueue($root)', + 'while ($queue.Count -gt 0) {', + ' $current = $queue.Dequeue()', + ' $toStop.Add($current)', + ' if ($childrenByParent.ContainsKey($current)) {', + ' foreach ($child in $childrenByParent[$current]) { $queue.Enqueue($child) }', + ' }', + '}', + 'foreach ($id in ($toStop | Select-Object -Unique | Sort-Object -Descending)) {', + ' Stop-Process -Id $id -Force -ErrorAction SilentlyContinue', + '}', + ].join('\n'), + ], + { + env: { + ...process.env, + GENARRATIVE_STOP_PID: String(pid), + }, + stdio: 'ignore', }, - stdio: 'ignore', - }); + ); } class DevRunner { constructor(options, baseEnv = process.env, explicitOptions = new Set()) { this.options = options; - this.baseEnv = {...baseEnv}; + this.baseEnv = { ...baseEnv }; this.explicitOptions = explicitOptions; const initialSpacetimeServer = options.spacetimeServerUrl || @@ -1067,7 +1109,8 @@ class DevRunner { } if ( command === 'spacetime' || - (command === 'all' && (!this.options.skipSpacetime || !this.options.skipPublish)) + (command === 'all' && + (!this.options.skipSpacetime || !this.options.skipPublish)) ) { requireCommand('spacetime'); } @@ -1153,16 +1196,24 @@ class DevRunner { return; } - const pidState = readRecordedSpacetimePidState(this.options.spacetimeDataDir); + const pidState = readRecordedSpacetimePidState( + this.options.spacetimeDataDir, + ); const recordedUrl = readRecordedSpacetimeUrl(this.options.spacetimeDataDir); if (pidState.state === 'missing') { if (recordedUrl) { - console.log(`[dev:spacetime] 记录的 URL 缺少 spacetime.pid,跳过复用: ${recordedUrl}`); + console.log( + `[dev:spacetime] 记录的 URL 缺少 spacetime.pid,跳过复用: ${recordedUrl}`, + ); } return; } - if (pidState.state === 'invalid' || pidState.state === 'dead' || pidState.state === 'unknown') { + if ( + pidState.state === 'invalid' || + pidState.state === 'dead' || + pidState.state === 'unknown' + ) { console.log('[dev:spacetime] 检测到 spacetime.pid 但状态无效,跳过复用'); return; } @@ -1198,12 +1249,16 @@ class DevRunner { this.state.spacetimePid = Number.isInteger(pidState.pid) ? pidState.pid : null; - const pidLabel = Number.isInteger(pidState.pid) ? ` pid=${pidState.pid}` : ''; + const pidLabel = Number.isInteger(pidState.pid) + ? ` pid=${pidState.pid}` + : ''; console.log(`[dev:spacetime] 复用已启动实例${pidLabel}: ${candidate}`); return; } - const pidLabel = Number.isInteger(pidState.pid) ? ` pid=${pidState.pid}` : ''; + const pidLabel = Number.isInteger(pidState.pid) + ? ` pid=${pidState.pid}` + : ''; throw new Error( `检测到 spacetime.pid${pidLabel},但无法连接候选地址: ${candidates.join(', ')}`, ); @@ -1225,7 +1280,7 @@ class DevRunner { } async resolvePorts(command) { - const {options} = this; + const { options } = this; const portConfig = {}; const portRangeFor = (optionName) => this.explicitOptions.has(optionName) ? null : this.state.portRange; @@ -1324,7 +1379,11 @@ class DevRunner { ); this.services.set( 'web', - new DevService('web', async (service) => this.startWeb(service), onStateChange), + new DevService( + 'web', + async (service) => this.startWeb(service), + onStateChange, + ), ); this.services.set( 'admin-web', @@ -1350,7 +1409,7 @@ class DevRunner { } printSummary(command) { - const {options, state} = this; + const { options, state } = this; console.log(`[dev] repo: ${repoRoot}`); console.log(`[dev] command: ${command}`); console.log(`[dev] watch: ${options.watch ? 'on' : 'off'}`); @@ -1364,7 +1423,9 @@ class DevRunner { ); } console.log(`[dev] web: http://127.0.0.1:${options.webPort}`); - console.log(`[dev] admin web: http://${state.adminWebTargetHost}:${options.adminWebPort}/admin/`); + console.log( + `[dev] admin web: http://${state.adminWebTargetHost}:${options.adminWebPort}/admin/`, + ); console.log(`[dev] api-server: ${state.apiTarget}`); console.log(`[dev] spacetime: ${state.spacetimeServer}`); console.log(`[dev] database: ${options.database}`); @@ -1374,7 +1435,11 @@ class DevRunner { try { ensureParentDir(devStackStatePath); const snapshot = buildDevStackSnapshot(this); - writeFileSync(devStackStatePath, `${JSON.stringify(snapshot, null, 2)}\n`, 'utf8'); + writeFileSync( + devStackStatePath, + `${JSON.stringify(snapshot, null, 2)}\n`, + 'utf8', + ); } catch (error) { console.warn(`[dev] 写入 ${devStackStatePath} 失败: ${error.message}`); } @@ -1437,20 +1502,23 @@ class DevRunner { } startSpacetime(service) { - const {options} = this; + const { options } = this; ensureParentDir(resolve(options.spacetimeDataDir, 'logs/.keep')); - const logFile = resolve(options.spacetimeDataDir, 'logs/dev-spacetime-start.log'); - const logStream = createWriteStream(logFile, {flags: 'a', encoding: 'utf8'}); + const logFile = resolve( + options.spacetimeDataDir, + 'logs/dev-spacetime-start.log', + ); + const logStream = createWriteStream(logFile, { + flags: 'a', + encoding: 'utf8', + }); service.logStream = logStream; const spacetimeToolVersion = readSpacetimeToolVersion(); assertSpacetimeToolVersionMatchesWorkspace({ toolVersion: spacetimeToolVersion, workspaceVersion: readWorkspaceSpacetimeVersion(), }); - recordSpacetimeToolVersion( - options.spacetimeDataDir, - spacetimeToolVersion, - ); + recordSpacetimeToolVersion(options.spacetimeDataDir, spacetimeToolVersion); console.log(`[dev:spacetime] log: ${logFile}`); service.updateRuntimeState({ @@ -1516,7 +1584,10 @@ class DevRunner { this.options.spacetimePort = port; this.state.spacetimeServer = `http://${this.options.spacetimeHost}:${port}`; - recordSpacetimeUrl(this.options.spacetimeDataDir, this.state.spacetimeServer); + recordSpacetimeUrl( + this.options.spacetimeDataDir, + this.state.spacetimeServer, + ); this.services.get('spacetime')?.updateRuntimeState({ host: this.options.spacetimeHost, port, @@ -1528,7 +1599,9 @@ class DevRunner { async waitForSpacetime() { const deadline = Date.now() + this.options.spacetimeTimeoutSeconds * 1000; while (Date.now() < deadline) { - if (await isHttpReady(new URL('/v1/ping', this.state.spacetimeServer).href)) { + if ( + await isHttpReady(new URL('/v1/ping', this.state.spacetimeServer).href) + ) { return; } await sleep(500); @@ -1570,23 +1643,37 @@ class DevRunner { console.log('[dev:spacetime] 未启用迁移引导密钥'); return; default: - throw new Error(`未知迁移引导密钥模式: ${this.options.migrationBootstrapSecretMode}`); + throw new Error( + `未知迁移引导密钥模式: ${this.options.migrationBootstrapSecretMode}`, + ); } env.GENARRATIVE_SPACETIME_MIGRATION_BOOTSTRAP_SECRET = this.options.migrationBootstrapSecret; - console.log(`[dev:spacetime] 迁移引导密钥: ${this.options.migrationBootstrapSecret}`); + console.log( + `[dev:spacetime] 迁移引导密钥: ${this.options.migrationBootstrapSecret}`, + ); } async ensureApiServerSpacetimeToken() { - const existingToken = String(this.baseEnv.GENARRATIVE_SPACETIME_TOKEN ?? '').trim(); - if (existingToken && shouldTrustExistingSpacetimeToken(existingToken, this.state.spacetimeServer)) { + const existingToken = String( + this.baseEnv.GENARRATIVE_SPACETIME_TOKEN ?? '', + ).trim(); + if ( + existingToken && + shouldTrustExistingSpacetimeToken( + existingToken, + this.state.spacetimeServer, + ) + ) { return; } const identityUrl = buildUrl(this.state.spacetimeServer, '/v1/identity'); if (!identityUrl) { - throw new Error(`无法构造 SpacetimeDB identity 地址: ${this.state.spacetimeServer}`); + throw new Error( + `无法构造 SpacetimeDB identity 地址: ${this.state.spacetimeServer}`, + ); } const response = await fetchSpacetimeIdentity(identityUrl); @@ -1608,7 +1695,10 @@ class DevRunner { const logFile = resolveApiServerLogFile(repoRoot, mergedEnv); ensureParentDir(logFile); - const logStream = createWriteStream(logFile, {flags: 'a', encoding: 'utf8'}); + const logStream = createWriteStream(logFile, { + flags: 'a', + encoding: 'utf8', + }); service.logStream = logStream; mergedEnv.GENARRATIVE_API_SERVER_LOG_FILE = logFile; @@ -1723,7 +1813,7 @@ class DevRunner { } startAdminWeb(service) { - const apiTarget = this.resolveFrontendApiTarget({admin: true}); + const apiTarget = this.resolveFrontendApiTarget({ admin: true }); const endpoint = resolveDevStackServiceEndpoint(this, 'admin-web'); const env = { ...this.baseEnv, @@ -1767,7 +1857,7 @@ class DevRunner { service.registerChild(child); } - resolveFrontendApiTarget({admin = false} = {}) { + resolveFrontendApiTarget({ admin = false } = {}) { if ( this.command === 'all' || this.explicitOptions.has('apiHost') || @@ -1909,7 +1999,10 @@ function stopExistingWindowsApiServer(logStream) { return; } - const apiServerExePath = resolve(repoRoot, 'server-rs/target/debug/api-server.exe'); + const apiServerExePath = resolve( + repoRoot, + 'server-rs/target/debug/api-server.exe', + ); const command = [ '$ErrorActionPreference = "Continue"', '$target = [System.IO.Path]::GetFullPath($env:GENARRATIVE_API_SERVER_EXE_TARGET)', @@ -1957,21 +2050,31 @@ function parseListenAddr(text) { return match?.[1] ?? ''; } -function createServiceWatcher({config, service, serviceName, restartFn, actionLabel = '重启'}) { +function createServiceWatcher({ + config, + service, + serviceName, + restartFn, + actionLabel = '重启', +}) { try { - const watcher = watch(config.path, {recursive: true}, (_event, fileName) => { - const filePath = fileName - ? resolve(config.path, String(fileName)) - : config.path; - notifyWatchedFile({ - config, - filePath, - restartFn, - service, - serviceName, - actionLabel, - }); - }); + const watcher = watch( + config.path, + { recursive: true }, + (_event, fileName) => { + const filePath = fileName + ? resolve(config.path, String(fileName)) + : config.path; + notifyWatchedFile({ + config, + filePath, + restartFn, + service, + serviceName, + actionLabel, + }); + }, + ); return { close: () => watcher.close(), @@ -1980,11 +2083,23 @@ function createServiceWatcher({config, service, serviceName, restartFn, actionLa console.warn( `[dev:watch] ${serviceName} 使用轮询监听 ${relative(repoRoot, config.path)}: ${error.message}`, ); - return createPollingWatcher({config, restartFn, service, serviceName, actionLabel}); + return createPollingWatcher({ + config, + restartFn, + service, + serviceName, + actionLabel, + }); } } -function createPollingWatcher({config, service, serviceName, restartFn, actionLabel = '重启'}) { +function createPollingWatcher({ + config, + service, + serviceName, + restartFn, + actionLabel = '重启', +}) { let snapshot = snapshotWatchedFiles(config.path, config.filter); const timer = setInterval(() => { const nextSnapshot = snapshotWatchedFiles(config.path, config.filter); @@ -2009,7 +2124,14 @@ function createPollingWatcher({config, service, serviceName, restartFn, actionLa }; } -function notifyWatchedFile({config, filePath, restartFn, service, serviceName, actionLabel}) { +function notifyWatchedFile({ + config, + filePath, + restartFn, + service, + serviceName, + actionLabel, +}) { if (!shouldAcceptWatchEvent(config, filePath)) { return; } @@ -2128,9 +2250,7 @@ function pipeChildOutput(child) { function uniqueNonEmpty(values) { return [ ...new Set( - values - .map((value) => String(value ?? '').trim()) - .filter(Boolean), + values.map((value) => String(value ?? '').trim()).filter(Boolean), ), ]; } @@ -2167,32 +2287,35 @@ function readRecordedSpacetimeToolVersion(dataDir) { function readRecordedSpacetimePidState(dataDir) { const pidPath = resolve(dataDir, 'spacetime.pid'); if (!existsSync(pidPath)) { - return {state: 'missing', pid: 0}; + return { state: 'missing', pid: 0 }; } try { - const rawPid = readFileSync(pidPath, 'utf8').split(/\r?\n/u)[0]?.trim() ?? ''; + const rawPid = + readFileSync(pidPath, 'utf8').split(/\r?\n/u)[0]?.trim() ?? ''; const pid = Number(rawPid); if (!Number.isInteger(pid) || pid <= 0) { - return {state: 'invalid', pid: 0}; + return { state: 'invalid', pid: 0 }; } try { process.kill(pid, 0); - return {state: 'alive', pid}; + return { state: 'alive', pid }; } catch (error) { if (error?.code === 'EPERM') { - return {state: 'alive', pid}; + return { state: 'alive', pid }; } - return {state: 'dead', pid: 0}; + return { state: 'dead', pid: 0 }; } } catch (error) { if (error?.code === 'EBUSY' || error?.code === 'EPERM') { - return {state: 'locked', pid: 0}; + return { state: 'locked', pid: 0 }; } - console.warn(`[dev:spacetime] 读取 PID 记录失败 ${pidPath}: ${error.message}`); - return {state: 'unknown', pid: 0}; + console.warn( + `[dev:spacetime] 读取 PID 记录失败 ${pidPath}: ${error.message}`, + ); + return { state: 'unknown', pid: 0 }; } } @@ -2202,7 +2325,9 @@ function recordSpacetimeToolVersion(dataDir, version) { try { writeFileSync(versionPath, `${version}\n`, 'utf8'); } catch (error) { - console.warn(`[dev:spacetime] 写入版本记录失败 ${versionPath}: ${error.message}`); + console.warn( + `[dev:spacetime] 写入版本记录失败 ${versionPath}: ${error.message}`, + ); } } @@ -2217,7 +2342,9 @@ function recordSpacetimeUrl(dataDir, serverUrl) { try { writeFileSync(target, `${serverUrl}\n`, 'utf8'); } catch (error) { - console.warn(`[dev:spacetime] 写入 URL 记录失败 ${target}: ${error.message}`); + console.warn( + `[dev:spacetime] 写入 URL 记录失败 ${target}: ${error.message}`, + ); } } } @@ -2242,7 +2369,7 @@ async function isHttpReady(url, timeoutMs = 1000) { const controller = new AbortController(); const timeout = setTimeout(() => controller.abort(), timeoutMs); try { - const response = await fetch(url, {signal: controller.signal}); + const response = await fetch(url, { signal: controller.signal }); return response.status >= 200 && response.status < 500; } catch { return false; @@ -2271,7 +2398,9 @@ async function fetchSpacetimeIdentity(url) { const text = await response.text(); if (!response.ok) { - throw new Error(`SpacetimeDB identity HTTP ${response.status}: ${trimPreview(text)}`); + throw new Error( + `SpacetimeDB identity HTTP ${response.status}: ${trimPreview(text)}`, + ); } let payload; @@ -2286,22 +2415,41 @@ async function fetchSpacetimeIdentity(url) { } const identity = - payload.identity ?? payload.Identity ?? payload.identity_hex ?? payload.identityHex; + payload.identity ?? + payload.Identity ?? + payload.identity_hex ?? + payload.identityHex; const token = payload.token ?? payload.Token; if (typeof identity !== 'string' || typeof token !== 'string') { - throw new Error(`SpacetimeDB identity 响应缺少 identity/token: ${trimPreview(text)}`); + throw new Error( + `SpacetimeDB identity 响应缺少 identity/token: ${trimPreview(text)}`, + ); } - return {identity, token}; + return { identity, token }; } -function shouldTrustExistingSpacetimeToken(existingToken, serverUrl) { - const shellToken = String(process.env.GENARRATIVE_SPACETIME_TOKEN ?? '').trim(); - if (shellToken && shellToken === existingToken) { +function shouldTrustExistingSpacetimeToken( + existingToken, + serverUrl, + { env = process.env, resolveCliToken = resolveCurrentSpacetimeCliToken } = {}, +) { + const normalizedToken = String(existingToken ?? '').trim(); + if (!normalizedToken) { + return false; + } + + const shellToken = String(env.GENARRATIVE_SPACETIME_TOKEN ?? '').trim(); + if (shellToken && shellToken === normalizedToken) { return true; } - return !isLoopbackSpacetimeServer(serverUrl); + if (!isLoopbackSpacetimeServer(serverUrl)) { + return true; + } + + const cliToken = resolveCliToken(); + return Boolean(cliToken && cliToken === normalizedToken); } function isLoopbackSpacetimeServer(serverUrl) { @@ -2313,14 +2461,30 @@ function isLoopbackSpacetimeServer(serverUrl) { } } +function resolveCurrentSpacetimeCliToken() { + const result = spawnSync('spacetime', ['login', 'show', '--token'], { + cwd: repoRoot, + encoding: 'utf8', + shell: process.platform === 'win32', + }); + if (result.status !== 0) { + return ''; + } + + const output = `${result.stdout ?? ''}\n${result.stderr ?? ''}`; + return /auth token\b.*?\bis\s+(\S+)/iu.exec(output)?.[1]?.trim() ?? ''; +} + function trimPreview(text, maxLength = 300) { - const normalized = String(text ?? '').replace(/\s+/gu, ' ').trim(); + const normalized = String(text ?? '') + .replace(/\s+/gu, ' ') + .trim(); return normalized.length > maxLength ? `${normalized.slice(0, maxLength)}...` : normalized; } -function runForeground(command, args, {cwd, env, label}) { +function runForeground(command, args, { cwd, env, label }) { return new Promise((resolveRun, rejectRun) => { const child = spawn(command, args, { cwd, @@ -2397,7 +2561,7 @@ function isDirectModuleExecution(argv1, moduleUrl, resolvePath = safeRealpath) { } } -function buildSpacetimePublishArgs({database, server, preserveDatabase}) { +function buildSpacetimePublishArgs({ database, server, preserveDatabase }) { const args = [ 'publish', database, @@ -2467,14 +2631,19 @@ export { parseArgs, parseSpacetimeToolVersion, resolveDevStackStatePath, + resolveCurrentSpacetimeCliToken, shouldAcceptWatchEvent, + shouldTrustExistingSpacetimeToken, }; async function main() { let runner; try { const baseEnv = mergeApiServerEnv(repoRoot, process.env); - const {command, explicitOptions, options} = parseArgs(process.argv.slice(2), baseEnv); + const { command, explicitOptions, options } = parseArgs( + process.argv.slice(2), + baseEnv, + ); runner = new DevRunner(options, baseEnv, explicitOptions); await runner.init(command); diff --git a/scripts/dev.test.ts b/scripts/dev.test.ts index 18d810a85..28f696923 100644 --- a/scripts/dev.test.ts +++ b/scripts/dev.test.ts @@ -1,8 +1,14 @@ -import {mkdirSync, mkdtempSync, readFileSync, rmSync, writeFileSync} from 'node:fs'; -import {tmpdir} from 'node:os'; -import {join} from 'node:path'; +import { + mkdirSync, + mkdtempSync, + readFileSync, + rmSync, + writeFileSync, +} from 'node:fs'; +import { tmpdir } from 'node:os'; +import { join } from 'node:path'; -import {afterEach, describe, expect, test, vi} from 'vitest'; +import { afterEach, describe, expect, test, vi } from 'vitest'; import { assertReusableSpacetimeProcessVersionMatchesWorkspace, @@ -23,6 +29,7 @@ import { parseSpacetimeToolVersion, resolveDevStackStatePath, shouldAcceptWatchEvent, + shouldTrustExistingSpacetimeToken, } from './dev.mjs'; const originalFetch = globalThis.fetch; @@ -58,7 +65,7 @@ describe('dev scheduler argument routing', () => { }); test('完整 dev 栈覆盖前端代理到本次解析出的 api-server 地址', () => { - const {command, explicitOptions, options} = parseArgs([], { + const { command, explicitOptions, options } = parseArgs([], { GENARRATIVE_API_PORT: '8090', GENARRATIVE_RUNTIME_SERVER_TARGET: 'http://127.0.0.1:3100', RUST_SERVER_TARGET: 'http://127.0.0.1:3100', @@ -75,7 +82,7 @@ describe('dev scheduler argument routing', () => { RUST_SERVER_TARGET: 'http://127.0.0.1:3100', GENARRATIVE_API_PORT: '8082', }; - const {command, explicitOptions, options} = parseArgs(['web'], testEnv); + const { command, explicitOptions, options } = parseArgs(['web'], testEnv); const runner = new DevRunner(options, testEnv, explicitOptions); runner.command = command; @@ -87,7 +94,7 @@ describe('dev scheduler argument routing', () => { RUST_SERVER_TARGET: 'http://127.0.0.1:3100', GENARRATIVE_API_PORT: '8082', }; - const {command, explicitOptions, options} = parseArgs( + const { command, explicitOptions, options } = parseArgs( ['web', '--api-port', '9090'], testEnv, ); @@ -102,11 +109,14 @@ describe('dev scheduler argument routing', () => { ADMIN_API_TARGET: 'http://127.0.0.1:3100', RUST_SERVER_TARGET: 'http://127.0.0.1:8082', }; - const {command, explicitOptions, options} = parseArgs(['admin-web'], testEnv); + const { command, explicitOptions, options } = parseArgs( + ['admin-web'], + testEnv, + ); const runner = new DevRunner(options, testEnv, explicitOptions); runner.command = command; - expect(runner.resolveFrontendApiTarget({admin: true})).toBe( + expect(runner.resolveFrontendApiTarget({ admin: true })).toBe( 'http://127.0.0.1:3100', ); }); @@ -114,18 +124,22 @@ describe('dev scheduler argument routing', () => { linuxTest('Linux 启动时按系统级端口段映射四个 dev 端口', async () => { const tempDir = mkdtempSync(join(tmpdir(), 'genarrative-dev-port-range-')); try { - const {command, explicitOptions, options} = parseArgs([], { + const { command, explicitOptions, options } = parseArgs([], { USER: 'alice', LOGNAME: 'alice', GENARRATIVE_DEV_PORT_RANGE: '22000-22099', GENARRATIVE_DEV_PORT_RANGE_REGISTRY_DIR: tempDir, }); - const runner = new DevRunner(options, { - USER: 'alice', - LOGNAME: 'alice', - GENARRATIVE_DEV_PORT_RANGE: '22000-22099', - GENARRATIVE_DEV_PORT_RANGE_REGISTRY_DIR: tempDir, - }, explicitOptions); + const runner = new DevRunner( + options, + { + USER: 'alice', + LOGNAME: 'alice', + GENARRATIVE_DEV_PORT_RANGE: '22000-22099', + GENARRATIVE_DEV_PORT_RANGE_REGISTRY_DIR: tempDir, + }, + explicitOptions, + ); await runner.prepareLinuxPortRange(command); @@ -137,56 +151,72 @@ describe('dev scheduler argument routing', () => { expect(runner.state.apiTarget).toBe('http://127.0.0.1:22001'); expect(runner.state.spacetimeServer).toBe('http://127.0.0.1:22002'); } finally { - rmSync(tempDir, {recursive: true, force: true}); + rmSync(tempDir, { recursive: true, force: true }); } }); - linuxTest('Linux 桌面壳显式指定 web-port 时不被系统级端口段改写', async () => { - const tempDir = mkdtempSync(join(tmpdir(), 'genarrative-dev-port-range-')); - try { - const {command, explicitOptions, options} = parseArgs( - ['web', '--web-port', '3000', '--strict-web-port'], - { - USER: 'alice', - LOGNAME: 'alice', - GENARRATIVE_DEV_PORT_RANGE: '22000-22099', - GENARRATIVE_DEV_PORT_RANGE_REGISTRY_DIR: tempDir, - }, + linuxTest( + 'Linux 桌面壳显式指定 web-port 时不被系统级端口段改写', + async () => { + const tempDir = mkdtempSync( + join(tmpdir(), 'genarrative-dev-port-range-'), ); - const runner = new DevRunner(options, { - USER: 'alice', - LOGNAME: 'alice', - GENARRATIVE_DEV_PORT_RANGE: '22000-22099', - GENARRATIVE_DEV_PORT_RANGE_REGISTRY_DIR: tempDir, - }, explicitOptions); + try { + const { command, explicitOptions, options } = parseArgs( + ['web', '--web-port', '3000', '--strict-web-port'], + { + USER: 'alice', + LOGNAME: 'alice', + GENARRATIVE_DEV_PORT_RANGE: '22000-22099', + GENARRATIVE_DEV_PORT_RANGE_REGISTRY_DIR: tempDir, + }, + ); + const runner = new DevRunner( + options, + { + USER: 'alice', + LOGNAME: 'alice', + GENARRATIVE_DEV_PORT_RANGE: '22000-22099', + GENARRATIVE_DEV_PORT_RANGE_REGISTRY_DIR: tempDir, + }, + explicitOptions, + ); - await runner.prepareLinuxPortRange(command); - expect(runner.state.portRange.label).toBe('22000-22099'); - expect(runner.options.webPort).toBe(3000); - expect(runner.options.apiPort).toBe(22001); - expect(runner.options.spacetimePort).toBe(22002); - expect(runner.options.adminWebPort).toBe(22003); - } finally { - rmSync(tempDir, {recursive: true, force: true}); - } - }); + await runner.prepareLinuxPortRange(command); + expect(runner.state.portRange.label).toBe('22000-22099'); + expect(runner.options.webPort).toBe(3000); + expect(runner.options.apiPort).toBe(22001); + expect(runner.options.spacetimePort).toBe(22002); + expect(runner.options.adminWebPort).toBe(22003); + } finally { + rmSync(tempDir, { recursive: true, force: true }); + } + }, + ); test('Windows 仍沿用原有端口解析,不启用 Linux 端口段登记', async () => { - const originalPlatform = Object.getOwnPropertyDescriptor(process, 'platform'); + const originalPlatform = Object.getOwnPropertyDescriptor( + process, + 'platform', + ); Object.defineProperty(process, 'platform', { configurable: true, value: 'win32', }); try { - const {command, explicitOptions, options} = parseArgs([], { + const { command, explicitOptions, options } = parseArgs([], { USER: 'alice', GENARRATIVE_DEV_PORT_RANGE: '22000-22099', }); - const runner = new DevRunner(options, { - USER: 'alice', - GENARRATIVE_DEV_PORT_RANGE: '22000-22099', - }, explicitOptions); + const runner = new DevRunner( + options, + { + USER: 'alice', + GENARRATIVE_DEV_PORT_RANGE: '22000-22099', + }, + explicitOptions, + ); await runner.prepareLinuxPortRange(command); @@ -201,29 +231,44 @@ describe('dev scheduler argument routing', () => { } } }); + + test('本地 SpacetimeDB 信任与当前 CLI 一致的 env token', () => { + expect( + shouldTrustExistingSpacetimeToken( + 'owner-cli-token', + 'http://127.0.0.1:3101', + { + env: {}, + resolveCliToken: () => 'owner-cli-token', + }, + ), + ).toBe(true); + }); }); describe('dev scheduler api-server env', () => { test('dev 脚本默认打开密码入口自动注册', () => { - const {options} = parseArgs(['api-server', '--api-port', '9091'], {}); + const { options } = parseArgs(['api-server', '--api-port', '9091'], {}); const env = buildApiServerProcessEnv({ baseEnv: {}, options, - state: {spacetimeServer: 'http://127.0.0.1:3199'}, + state: { spacetimeServer: 'http://127.0.0.1:3199' }, }); - expect(env.GENARRATIVE_DEV_PASSWORD_ENTRY_AUTO_REGISTER_ENABLED).toBe('true'); + expect(env.GENARRATIVE_DEV_PASSWORD_ENTRY_AUTO_REGISTER_ENABLED).toBe( + 'true', + ); expect(env.GENARRATIVE_PROCESS_ROLE).toBe('all'); expect(env.GENARRATIVE_API_PORT).toBe('9091'); expect(env.GENARRATIVE_SPACETIME_SERVER_URL).toBe('http://127.0.0.1:3199'); }); test('dev 脚本保留显式 api-server 进程角色', () => { - const {options} = parseArgs(['api-server'], {}); + const { options } = parseArgs(['api-server'], {}); const env = buildApiServerProcessEnv({ - baseEnv: {GENARRATIVE_PROCESS_ROLE: 'api'}, + baseEnv: { GENARRATIVE_PROCESS_ROLE: 'api' }, options, - state: {spacetimeServer: 'http://127.0.0.1:3199'}, + state: { spacetimeServer: 'http://127.0.0.1:3199' }, }); expect(env.GENARRATIVE_PROCESS_ROLE).toBe('api'); @@ -235,15 +280,15 @@ describe('dev scheduler api-server env', () => { const binDir = join(tempDir, 'Genarrative', 'ffmpeg', 'bin'); const ffmpegPath = join(binDir, 'ffmpeg.exe'); const ffprobePath = join(binDir, 'ffprobe.exe'); - mkdirSync(binDir, {recursive: true}); + mkdirSync(binDir, { recursive: true }); writeFileSync(ffmpegPath, '', 'utf8'); writeFileSync(ffprobePath, '', 'utf8'); - const {options} = parseArgs(['api-server'], {}); + const { options } = parseArgs(['api-server'], {}); const env = buildApiServerProcessEnv({ - baseEnv: {LOCALAPPDATA: tempDir, Path: 'C:\\Windows\\System32'}, + baseEnv: { LOCALAPPDATA: tempDir, Path: 'C:\\Windows\\System32' }, options, - state: {spacetimeServer: 'http://127.0.0.1:3199'}, + state: { spacetimeServer: 'http://127.0.0.1:3199' }, platform: 'win32', }); @@ -252,7 +297,7 @@ describe('dev scheduler api-server env', () => { expect(env.GENARRATIVE_CHARACTER_ANIMATION_FFMPEG_PATH).toBe(ffmpegPath); expect(env.Path?.split(';')[0]).toBe(binDir); } finally { - rmSync(tempDir, {recursive: true, force: true}); + rmSync(tempDir, { recursive: true, force: true }); } }); @@ -260,11 +305,11 @@ describe('dev scheduler api-server env', () => { const tempDir = mkdtempSync(join(tmpdir(), 'genarrative-ffmpeg-')); try { const binDir = join(tempDir, 'Genarrative', 'ffmpeg', 'bin'); - mkdirSync(binDir, {recursive: true}); + mkdirSync(binDir, { recursive: true }); writeFileSync(join(binDir, 'ffmpeg.exe'), '', 'utf8'); writeFileSync(join(binDir, 'ffprobe.exe'), '', 'utf8'); - const {options} = parseArgs(['api-server'], {}); + const { options } = parseArgs(['api-server'], {}); const env = buildApiServerProcessEnv({ baseEnv: { LOCALAPPDATA: tempDir, @@ -272,14 +317,16 @@ describe('dev scheduler api-server env', () => { CHARACTER_ANIMATION_FFPROBE_PATH: 'D:\\tools\\ffprobe.exe', }, options, - state: {spacetimeServer: 'http://127.0.0.1:3199'}, + state: { spacetimeServer: 'http://127.0.0.1:3199' }, platform: 'win32', }); expect(env.CHARACTER_ANIMATION_FFMPEG_PATH).toBe('D:\\tools\\ffmpeg.exe'); - expect(env.CHARACTER_ANIMATION_FFPROBE_PATH).toBe('D:\\tools\\ffprobe.exe'); + expect(env.CHARACTER_ANIMATION_FFPROBE_PATH).toBe( + 'D:\\tools\\ffprobe.exe', + ); } finally { - rmSync(tempDir, {recursive: true, force: true}); + rmSync(tempDir, { recursive: true, force: true }); } }); }); @@ -352,7 +399,7 @@ describe('dev scheduler Rust build env', () => { RUSTC_WRAPPER: '/usr/bin/sccache', CARGO_BUILD_RUSTC_WRAPPER: 'sccache', }, - {log: false}, + { log: false }, ); expect(env.RUSTC_WRAPPER).not.toBe('/usr/bin/sccache'); @@ -366,7 +413,7 @@ describe('dev scheduler Rust build env', () => { RUSTC_WRAPPER: 'custom-wrapper', CARGO_BUILD_RUSTC_WRAPPER: 'sccache', }, - {log: false}, + { log: false }, ); expect(env.RUSTC_WRAPPER).toBe('custom-wrapper'); @@ -374,7 +421,10 @@ describe('dev scheduler Rust build env', () => { }); test('Windows 下本地 dev Rust env 用空 wrapper 覆盖项目 sccache', () => { - const originalPlatform = Object.getOwnPropertyDescriptor(process, 'platform'); + const originalPlatform = Object.getOwnPropertyDescriptor( + process, + 'platform', + ); Object.defineProperty(process, 'platform', { configurable: true, value: 'win32', @@ -386,7 +436,7 @@ describe('dev scheduler Rust build env', () => { RUSTC_WRAPPER: 'sccache', CARGO_BUILD_RUSTC_WRAPPER: 'sccache', }, - {log: false}, + { log: false }, ); expect(env.RUSTC_WRAPPER).toBe(''); @@ -432,7 +482,7 @@ describe('dev scheduler stack state file', () => { [ 'web', { - child: {pid: 4321}, + child: { pid: 4321 }, runtime: { status: 'running', pid: 4321, @@ -476,10 +526,16 @@ describe('dev scheduler spacetime reuse guard', () => { test('记录 URL 可 ping 但没有 spacetime.pid 时不复用宿主', async () => { const tempDir = mkdtempSync(join(tmpdir(), 'genarrative-spacetime-reuse-')); try { - writeFileSync(join(tempDir, 'dev-spacetime-url'), 'http://127.0.0.1:3199\n', 'utf8'); - globalThis.fetch = vi.fn(async () => ({status: 200})) as unknown as typeof fetch; + writeFileSync( + join(tempDir, 'dev-spacetime-url'), + 'http://127.0.0.1:3199\n', + 'utf8', + ); + globalThis.fetch = vi.fn(async () => ({ + status: 200, + })) as unknown as typeof fetch; - const {command, explicitOptions, options} = parseArgs( + const { command, explicitOptions, options } = parseArgs( ['--spacetime-data-dir', tempDir], {}, ); @@ -490,23 +546,29 @@ describe('dev scheduler spacetime reuse guard', () => { expect(runner.state.spacetimeReused).toBeUndefined(); expect(runner.state.spacetimeServer).toBe('http://127.0.0.1:3101'); } finally { - rmSync(tempDir, {recursive: true, force: true}); + rmSync(tempDir, { recursive: true, force: true }); } }); test('记录 URL 可 ping 且 spacetime.pid 存活时复用宿主', async () => { const tempDir = mkdtempSync(join(tmpdir(), 'genarrative-spacetime-reuse-')); try { - writeFileSync(join(tempDir, 'dev-spacetime-url'), 'http://127.0.0.1:3199\n', 'utf8'); + writeFileSync( + join(tempDir, 'dev-spacetime-url'), + 'http://127.0.0.1:3199\n', + 'utf8', + ); writeFileSync(join(tempDir, 'spacetime.pid'), `${process.pid}\n`, 'utf8'); writeFileSync( join(tempDir, 'dev-spacetime-tool-version'), `${workspaceSpacetimeVersionForTest()}\n`, 'utf8', ); - globalThis.fetch = vi.fn(async () => ({status: 200})) as unknown as typeof fetch; + globalThis.fetch = vi.fn(async () => ({ + status: 200, + })) as unknown as typeof fetch; - const {command, explicitOptions, options} = parseArgs( + const { command, explicitOptions, options } = parseArgs( ['--spacetime-data-dir', tempDir], {}, ); @@ -518,7 +580,7 @@ describe('dev scheduler spacetime reuse guard', () => { expect(runner.state.spacetimeServer).toBe('http://127.0.0.1:3199'); expect(runner.options.spacetimePort).toBe(3199); } finally { - rmSync(tempDir, {recursive: true, force: true}); + rmSync(tempDir, { recursive: true, force: true }); } }); @@ -531,9 +593,11 @@ describe('dev scheduler spacetime reuse guard', () => { `${workspaceSpacetimeVersionForTest()}\n`, 'utf8', ); - globalThis.fetch = vi.fn(async () => ({status: 200})) as unknown as typeof fetch; + globalThis.fetch = vi.fn(async () => ({ + status: 200, + })) as unknown as typeof fetch; - const {command, explicitOptions, options} = parseArgs( + const { command, explicitOptions, options } = parseArgs( ['--spacetime-data-dir', tempDir, '--spacetime-port', '3198'], {}, ); @@ -548,7 +612,7 @@ describe('dev scheduler spacetime reuse guard', () => { expect.any(Object), ); } finally { - rmSync(tempDir, {recursive: true, force: true}); + rmSync(tempDir, { recursive: true, force: true }); } }); @@ -556,9 +620,11 @@ describe('dev scheduler spacetime reuse guard', () => { const tempDir = mkdtempSync(join(tmpdir(), 'genarrative-spacetime-reuse-')); try { writeFileSync(join(tempDir, 'spacetime.pid'), `${process.pid}\n`, 'utf8'); - globalThis.fetch = vi.fn(async () => ({status: 503})) as unknown as typeof fetch; + globalThis.fetch = vi.fn(async () => ({ + status: 503, + })) as unknown as typeof fetch; - const {command, explicitOptions, options} = parseArgs( + const { command, explicitOptions, options } = parseArgs( ['--spacetime-data-dir', tempDir, '--spacetime-port', '3198'], {}, ); @@ -569,17 +635,20 @@ describe('dev scheduler spacetime reuse guard', () => { ); expect(runner.state.spacetimeReused).toBeUndefined(); } finally { - rmSync(tempDir, {recursive: true, force: true}); + rmSync(tempDir, { recursive: true, force: true }); } }); }); describe('dev scheduler interactive input', () => { test('前端 dev server 不继承 stdin,避免吞掉 rs 重启命令', () => { - const options = createDevServerSpawnOptions({cwd: repoRootForTest(), env: {A: 'B'}}); + const options = createDevServerSpawnOptions({ + cwd: repoRootForTest(), + env: { A: 'B' }, + }); expect(options.stdio).toEqual(['ignore', 'pipe', 'pipe']); - expect(options.env).toEqual({A: 'B'}); + expect(options.env).toEqual({ A: 'B' }); }); }); @@ -602,16 +671,25 @@ describe('dev scheduler watch routing', () => { }; expect( - shouldAcceptWatchEvent(config, join(process.cwd(), 'apps/admin-web/src/App.tsx')), + shouldAcceptWatchEvent( + config, + join(process.cwd(), 'apps/admin-web/src/App.tsx'), + ), ).toBe(true); expect( shouldAcceptWatchEvent( config, - join(process.cwd(), 'apps/admin-web/node_modules/.vite/deps/_metadata.json'), + join( + process.cwd(), + 'apps/admin-web/node_modules/.vite/deps/_metadata.json', + ), ), ).toBe(false); expect( - shouldAcceptWatchEvent(config, join(process.cwd(), 'apps/admin-web/dist/assets/app.js')), + shouldAcceptWatchEvent( + config, + join(process.cwd(), 'apps/admin-web/dist/assets/app.js'), + ), ).toBe(false); }); }); @@ -641,9 +719,15 @@ spacetimedb tool version 2.5.0; spacetimedb-lib version 2.5.0; }); test('复用本地 SpacetimeDB standalone 前校验启动时版本记录', () => { - const tempDir = mkdtempSync(join(tmpdir(), 'genarrative-spacetime-version-')); + const tempDir = mkdtempSync( + join(tmpdir(), 'genarrative-spacetime-version-'), + ); try { - writeFileSync(join(tempDir, 'dev-spacetime-tool-version'), '2.1.0\n', 'utf8'); + writeFileSync( + join(tempDir, 'dev-spacetime-tool-version'), + '2.1.0\n', + 'utf8', + ); expect(() => assertReusableSpacetimeProcessVersionMatchesWorkspace({ @@ -652,7 +736,7 @@ spacetimedb tool version 2.5.0; spacetimedb-lib version 2.5.0; }), ).toThrow('SpacetimeDB procedure 调用超时'); } finally { - rmSync(tempDir, {recursive: true, force: true}); + rmSync(tempDir, { recursive: true, force: true }); } }); @@ -662,7 +746,11 @@ spacetimedb tool version 2.5.0; spacetimedb-lib version 2.5.0; ); expect(isSpacetimePublishPermissionError(error)).toBe(true); - expect(isSpacetimePublishPermissionError(new Error('No database target matches'))).toBe(false); + expect( + isSpacetimePublishPermissionError( + new Error('No database target matches'), + ), + ).toBe(false); }); test('发布 spacetime-module 时忽略 spacetime.json 以免覆盖显式数据库', () => { @@ -685,11 +773,11 @@ spacetimedb tool version 2.5.0; spacetimedb-lib version 2.5.0; }); test('手动刷新 spacetime 只重新发布模块,不重启 standalone 进程', async () => { - const {explicitOptions, options} = parseArgs([], {}); + const { explicitOptions, options } = parseArgs([], {}); const runner = new DevRunner(options, {}, explicitOptions); const restart = vi.fn(); - runner.services.set('spacetime', {restart}); + runner.services.set('spacetime', { restart }); runner.waitForSpacetime = vi.fn(async () => {}); runner.publishSpacetimeModule = vi.fn(async () => {}); @@ -701,11 +789,11 @@ spacetimedb tool version 2.5.0; spacetimedb-lib version 2.5.0; }); test('skip-publish 时 spacetime 刷新不会重启或发布', async () => { - const {explicitOptions, options} = parseArgs(['--skip-publish'], {}); + const { explicitOptions, options } = parseArgs(['--skip-publish'], {}); const runner = new DevRunner(options, {}, explicitOptions); const restart = vi.fn(); - runner.services.set('spacetime', {restart}); + runner.services.set('spacetime', { restart }); runner.waitForSpacetime = vi.fn(async () => {}); runner.publishSpacetimeModule = vi.fn(async () => {}); @@ -717,7 +805,7 @@ spacetimedb tool version 2.5.0; spacetimedb-lib version 2.5.0; }); test('启动 api-server 前为空 token 自动创建本地 Web identity', async () => { - const {explicitOptions, options} = parseArgs([], { + const { explicitOptions, options } = parseArgs([], { GENARRATIVE_SPACETIME_TOKEN: '', }); const runner = new DevRunner(options, {}, explicitOptions); @@ -747,10 +835,14 @@ spacetimedb tool version 2.5.0; spacetimedb-lib version 2.5.0; const originalToken = process.env.GENARRATIVE_SPACETIME_TOKEN; delete process.env.GENARRATIVE_SPACETIME_TOKEN; try { - const {explicitOptions, options} = parseArgs([], { + const { explicitOptions, options } = parseArgs([], { GENARRATIVE_SPACETIME_TOKEN: 'stale-env-file-token', }); - const runner = new DevRunner(options, {GENARRATIVE_SPACETIME_TOKEN: 'stale-env-file-token'}, explicitOptions); + const runner = new DevRunner( + options, + { GENARRATIVE_SPACETIME_TOKEN: 'stale-env-file-token' }, + explicitOptions, + ); runner.state.spacetimeServer = 'http://127.0.0.1:3101'; globalThis.fetch = vi.fn(async () => ({ ok: true, @@ -764,7 +856,9 @@ spacetimedb tool version 2.5.0; spacetimedb-lib version 2.5.0; await runner.ensureApiServerSpacetimeToken(); - expect(runner.baseEnv.GENARRATIVE_SPACETIME_TOKEN).toBe('fresh-web-token'); + expect(runner.baseEnv.GENARRATIVE_SPACETIME_TOKEN).toBe( + 'fresh-web-token', + ); } finally { if (originalToken === undefined) { delete process.env.GENARRATIVE_SPACETIME_TOKEN; diff --git a/server-rs/crates/api-server/src/app.rs b/server-rs/crates/api-server/src/app.rs index 67ced6ea9..d451c441f 100644 --- a/server-rs/crates/api-server/src/app.rs +++ b/server-rs/crates/api-server/src/app.rs @@ -3388,6 +3388,170 @@ mod tests { ); } + #[tokio::test] + async fn wechat_bind_start_binds_oauth_identity_to_current_phone_user() { + let config = AppConfig { + sms_auth_enabled: true, + wechat_auth_enabled: true, + ..AppConfig::default() + }; + let app = build_router(AppState::new(config).expect("state should build")); + + let phone_send_response = app + .clone() + .oneshot( + Request::builder() + .method("POST") + .uri("/api/auth/phone/send-code") + .header("content-type", "application/json") + .body(Body::from( + serde_json::json!({ + "phone": "13800138000", + "scene": "login" + }) + .to_string(), + )) + .expect("phone send request should build"), + ) + .await + .expect("phone send request should succeed"); + assert_eq!(phone_send_response.status(), StatusCode::OK); + + let phone_login_response = app + .clone() + .oneshot( + Request::builder() + .method("POST") + .uri("/api/auth/phone/login") + .header("content-type", "application/json") + .body(Body::from( + serde_json::json!({ + "phone": "13800138000", + "code": "123456" + }) + .to_string(), + )) + .expect("phone login request should build"), + ) + .await + .expect("phone login request should succeed"); + let phone_login_body = phone_login_response + .into_body() + .collect() + .await + .expect("phone login body should collect") + .to_bytes(); + let phone_login_payload: Value = + serde_json::from_slice(&phone_login_body).expect("phone login payload should be json"); + let phone_user_id = phone_login_payload["user"]["id"].clone(); + let phone_token = phone_login_payload["token"] + .as_str() + .expect("phone token should exist"); + + let bind_start_response = app + .clone() + .oneshot( + Request::builder() + .uri("/api/auth/wechat/bind-start?redirectPath=%2Fplay%3FclientRuntime%3Dwechat_h5") + .header("authorization", format!("Bearer {phone_token}")) + .header( + "user-agent", + "Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X) AppleWebKit/605.1.15 Mobile/15E148 MicroMessenger/8.0.50", + ) + .header("host", "localhost:3000") + .body(Body::empty()) + .expect("wechat bind start request should build"), + ) + .await + .expect("wechat bind start should succeed"); + assert_eq!(bind_start_response.status(), StatusCode::OK); + let bind_start_body = bind_start_response + .into_body() + .collect() + .await + .expect("wechat bind start body should collect") + .to_bytes(); + let bind_start_payload: Value = serde_json::from_slice(&bind_start_body) + .expect("wechat bind start payload should be json"); + let authorization_url = bind_start_payload["authorizationUrl"] + .as_str() + .expect("wechat bind authorization url should exist"); + let callback_state = url::Url::parse(authorization_url) + .expect("authorization url should be valid") + .query_pairs() + .find(|(key, _)| key == "state") + .map(|(_, value)| value.into_owned()) + .expect("state should exist"); + + let callback_response = app + .clone() + .oneshot( + Request::builder() + .uri(format!( + "/api/auth/wechat/callback?state={callback_state}&mock_code=wx-bind-code" + )) + .header( + "user-agent", + "Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X) AppleWebKit/605.1.15 Mobile/15E148 MicroMessenger/8.0.50", + ) + .header("host", "localhost:3000") + .body(Body::empty()) + .expect("wechat callback request should build"), + ) + .await + .expect("wechat callback request should succeed"); + assert_eq!(callback_response.status(), StatusCode::SEE_OTHER); + let location = callback_response + .headers() + .get("location") + .and_then(|value| value.to_str().ok()) + .expect("redirect location should exist"); + assert!(location.starts_with("/play?clientRuntime=wechat_h5#")); + assert!(location.contains("auth_provider=wechat")); + assert!(location.contains("auth_binding_status=active")); + + let auth_hash = location + .split('#') + .nth(1) + .expect("hash fragment should exist"); + let auth_params = url::form_urlencoded::parse(auth_hash.as_bytes()) + .into_owned() + .collect::>(); + let bound_token = auth_params + .get("auth_token") + .expect("bound auth token should exist"); + + let me_response = app + .oneshot( + Request::builder() + .uri("/api/auth/me") + .header("authorization", format!("Bearer {bound_token}")) + .body(Body::empty()) + .expect("auth me request should build"), + ) + .await + .expect("auth me request should succeed"); + assert_eq!(me_response.status(), StatusCode::OK); + let me_body = me_response + .into_body() + .collect() + .await + .expect("auth me body should collect") + .to_bytes(); + let me_payload: Value = + serde_json::from_slice(&me_body).expect("auth me payload should be json"); + assert_eq!(me_payload["user"]["id"], phone_user_id); + assert_eq!( + me_payload["user"]["loginMethod"], + Value::String("phone".to_string()) + ); + assert_eq!(me_payload["user"]["wechatBound"], Value::Bool(true)); + assert_eq!( + me_payload["user"]["wechatAccount"], + Value::String("wx-bind-code".to_string()) + ); + } + #[tokio::test] async fn auth_sessions_returns_multi_device_session_summaries() { let state = AppState::new(AppConfig::default()).expect("state should build"); diff --git a/server-rs/crates/api-server/src/main.rs b/server-rs/crates/api-server/src/main.rs index b64b8bf79..b281584d0 100644 --- a/server-rs/crates/api-server/src/main.rs +++ b/server-rs/crates/api-server/src/main.rs @@ -75,6 +75,7 @@ mod phone_auth; mod platform_errors; mod process_metrics; mod profile_identity; +mod profile_recharge_expiration_worker; mod prompt; mod public_work; mod puzzle; @@ -131,6 +132,7 @@ use crate::{ config::{AppConfig, ProcessRole}, external_generation_worker::run_external_generation_worker, external_generation_worker_controller::run_external_generation_worker_controller, + profile_recharge_expiration_worker::spawn_profile_recharge_expiration_worker, state::{AppState, AppStateInitError}, tracking_outbox::TrackingOutbox, wallet_refund_outbox::WalletRefundOutbox, @@ -408,6 +410,7 @@ async fn finalize_shutdown(context: ShutdownContext) { fn spawn_app_state_background_workers(state: &AppState) { state.puzzle_gallery_cache().spawn_cleanup_task(); + spawn_profile_recharge_expiration_worker(state.clone()); if let Some(outbox) = state.tracking_outbox() { outbox.spawn_worker(); } diff --git a/server-rs/crates/api-server/src/modules/auth.rs b/server-rs/crates/api-server/src/modules/auth.rs index 5cb67df28..fecbf4fe0 100644 --- a/server-rs/crates/api-server/src/modules/auth.rs +++ b/server-rs/crates/api-server/src/modules/auth.rs @@ -17,7 +17,8 @@ use crate::{ refresh_session::refresh_session, state::AppState, wechat::auth::{ - bind_wechat_phone, handle_wechat_callback, login_wechat_mini_program, start_wechat_login, + bind_wechat_phone, handle_wechat_callback, login_wechat_mini_program, start_wechat_bind, + start_wechat_login, }, }; @@ -72,6 +73,13 @@ pub fn router(state: AppState) -> Router { .route("/api/auth/phone/send-code", post(send_phone_code)) .route("/api/auth/phone/login", post(phone_login)) .route("/api/auth/wechat/start", get(start_wechat_login)) + .route( + "/api/auth/wechat/bind-start", + get(start_wechat_bind).route_layer(middleware::from_fn_with_state( + state.clone(), + require_bearer_auth, + )), + ) .route("/api/auth/wechat/callback", get(handle_wechat_callback)) .route( "/api/auth/wechat/miniprogram-login", diff --git a/server-rs/crates/api-server/src/profile_recharge_expiration_worker.rs b/server-rs/crates/api-server/src/profile_recharge_expiration_worker.rs new file mode 100644 index 000000000..617e70e17 --- /dev/null +++ b/server-rs/crates/api-server/src/profile_recharge_expiration_worker.rs @@ -0,0 +1,207 @@ +use std::{process, time::Duration}; + +use module_runtime::RuntimeProfileRechargeOrderExpirationScheduleSnapshot; +use platform_wechat::pay::WechatPayError; +use shared_kernel::offset_datetime_to_unix_micros; +use time::OffsetDateTime; +use tokio::time::MissedTickBehavior; +use tracing::{debug, info, warn}; + +use crate::state::AppState; + +const PROFILE_RECHARGE_EXPIRATION_WORKER_INTERVAL: Duration = Duration::from_secs(15); +const PROFILE_RECHARGE_EXPIRATION_WORKER_LEASE: Duration = Duration::from_secs(90); +const PROFILE_RECHARGE_EXPIRATION_WORKER_CLAIM_LIMIT: u32 = 20; + +pub fn spawn_profile_recharge_expiration_worker(state: AppState) { + tokio::spawn(async move { + run_profile_recharge_expiration_worker(state).await; + }); +} + +async fn run_profile_recharge_expiration_worker(state: AppState) { + let worker_id = format!("api:{}:profile-recharge-expiration", process::id()); + let mut interval = tokio::time::interval(PROFILE_RECHARGE_EXPIRATION_WORKER_INTERVAL); + interval.set_missed_tick_behavior(MissedTickBehavior::Delay); + + loop { + interval.tick().await; + let now_micros = current_unix_micros(); + let lease_expires_at_micros = now_micros + + i64::try_from(PROFILE_RECHARGE_EXPIRATION_WORKER_LEASE.as_micros()) + .unwrap_or(90_000_000); + let schedules = match state + .spacetime_client() + .claim_profile_recharge_order_expiration_schedules( + worker_id.clone(), + now_micros, + lease_expires_at_micros, + PROFILE_RECHARGE_EXPIRATION_WORKER_CLAIM_LIMIT, + ) + .await + { + Ok(schedules) => schedules, + Err(error) => { + warn!("充值订单过期检查 claim 失败:{error}"); + continue; + } + }; + + if schedules.is_empty() { + debug!("充值订单过期检查暂无到期任务"); + continue; + } + + for schedule in schedules { + process_profile_recharge_expiration_schedule(&state, schedule).await; + } + } +} + +async fn process_profile_recharge_expiration_schedule( + state: &AppState, + schedule: RuntimeProfileRechargeOrderExpirationScheduleSnapshot, +) { + let order_id = schedule.order_id.clone(); + let wechat_order = match state + .wechat_pay_client() + .query_order_by_out_trade_no(&order_id) + .await + { + Ok(order) => order, + Err(WechatPayError::OrderNotExist(message)) => { + warn!( + order_id = order_id.as_str(), + error = message.as_str(), + "过期前微信查单确认订单不存在,关闭本地 pending 订单" + ); + close_order_not_found_profile_recharge_order(state, &order_id).await; + return; + } + Err(error) => { + warn!( + order_id = order_id.as_str(), + "过期前微信查单失败,将等待租约过期后重试:{error}" + ); + return; + } + }; + + if wechat_order.out_trade_no != order_id { + warn!( + order_id = order_id.as_str(), + provider_order_id = wechat_order.out_trade_no.as_str(), + "过期前微信查单返回的商户订单号不匹配,将等待租约过期后重试" + ); + return; + } + + match wechat_order.trade_state.as_str() { + "SUCCESS" => { + let paid_at_micros = wechat_order + .success_time + .as_deref() + .and_then(|value| shared_kernel::parse_rfc3339(value).ok()) + .map(offset_datetime_to_unix_micros) + .unwrap_or_else(current_unix_micros); + match state + .spacetime_client() + .mark_profile_recharge_order_paid( + order_id.clone(), + paid_at_micros, + wechat_order.transaction_id, + ) + .await + { + Ok(_) => { + complete_profile_recharge_expiration_schedule(state, &order_id).await; + state.publish_profile_recharge_order_update(order_id.clone()); + info!( + order_id = order_id.as_str(), + "过期检查发现微信已支付,已补确认入账" + ); + } + Err(error) => { + warn!( + order_id = order_id.as_str(), + "过期检查确认已支付订单失败:{error}" + ); + } + } + } + "NOTPAY" | "CLOSED" | "REVOKED" | "PAYERROR" => { + match state + .spacetime_client() + .close_profile_recharge_order(order_id.clone(), current_unix_micros()) + .await + { + Ok(_) => { + complete_profile_recharge_expiration_schedule(state, &order_id).await; + state.publish_profile_recharge_order_update(order_id.clone()); + info!( + order_id = order_id.as_str(), + trade_state = wechat_order.trade_state.as_str(), + "充值订单到期且微信确认未支付,已关闭本地订单" + ); + } + Err(error) => { + warn!( + order_id = order_id.as_str(), + "关闭过期充值订单失败:{error}" + ); + } + } + } + "USERPAYING" => { + info!( + order_id = order_id.as_str(), + "微信订单仍在支付中,将等待租约过期后重试" + ); + } + trade_state => { + warn!( + order_id = order_id.as_str(), + trade_state, "微信订单状态暂不适合本地关闭,将等待租约过期后重试" + ); + } + } +} + +async fn close_order_not_found_profile_recharge_order(state: &AppState, order_id: &str) { + match state + .spacetime_client() + .close_profile_recharge_order(order_id.to_string(), current_unix_micros()) + .await + { + Ok(_) => { + complete_profile_recharge_expiration_schedule(state, order_id).await; + state.publish_profile_recharge_order_update(order_id.to_string()); + info!( + order_id, + reason = "ORDER_NOT_EXIST", + "过期检查发现微信订单不存在,已关闭本地充值订单" + ); + } + Err(error) => { + warn!( + order_id, + reason = "ORDER_NOT_EXIST", + "关闭微信不存在的过期充值订单失败:{error}" + ); + } + } +} + +async fn complete_profile_recharge_expiration_schedule(state: &AppState, order_id: &str) { + if let Err(error) = state + .spacetime_client() + .complete_profile_recharge_order_expiration_schedule(order_id.to_string()) + .await + { + warn!(order_id, "删除充值订单过期检查任务失败:{error}"); + } +} + +fn current_unix_micros() -> i64 { + offset_datetime_to_unix_micros(OffsetDateTime::now_utc()) +} diff --git a/server-rs/crates/api-server/src/runtime_profile.rs b/server-rs/crates/api-server/src/runtime_profile.rs index 5bd8a8d5b..34128d3c7 100644 --- a/server-rs/crates/api-server/src/runtime_profile.rs +++ b/server-rs/crates/api-server/src/runtime_profile.rs @@ -10,7 +10,7 @@ use axum::{ use hmac::{Hmac, Mac}; use module_runtime::{ AnalyticsGranularity, PROFILE_RECHARGE_PAYMENT_CHANNEL_MOCK, - PROFILE_RECHARGE_PAYMENT_CHANNEL_WECHAT_H5, + PROFILE_RECHARGE_PAYMENT_CHANNEL_WECHAT_H5, PROFILE_RECHARGE_PAYMENT_CHANNEL_WECHAT_JSAPI, PROFILE_RECHARGE_PAYMENT_CHANNEL_WECHAT_MINI_PROGRAM, PROFILE_RECHARGE_PAYMENT_CHANNEL_WECHAT_MINI_PROGRAM_VIRTUAL, PROFILE_RECHARGE_PAYMENT_CHANNEL_WECHAT_NATIVE, RuntimeProfileCodeOperationRecord, @@ -240,6 +240,7 @@ pub async fn create_profile_recharge_order( let wechat_mini_program_pay_params = if payment_channel == PROFILE_RECHARGE_PAYMENT_CHANNEL_WECHAT_MINI_PROGRAM + || payment_channel == PROFILE_RECHARGE_PAYMENT_CHANNEL_WECHAT_JSAPI { let identity = resolve_wechat_identity_for_payment(&state, &order.user_id) .await @@ -407,6 +408,7 @@ pub async fn confirm_wechat_profile_recharge_order( map_runtime_profile_client_error(error), ) })?; + state.publish_profile_recharge_order_update(order.order_id.clone()); Ok(json_success_body( Some(&request_context), @@ -1305,18 +1307,43 @@ fn validate_recharge_device_for_payment_channel( PROFILE_RECHARGE_PAYMENT_CHANNEL_WECHAT_MINI_PROGRAM_VIRTUAL => { claims.is_wechat_mini_program_device() } - PROFILE_RECHARGE_PAYMENT_CHANNEL_WECHAT_H5 => claims.is_mobile_wechat_browser_device(), - PROFILE_RECHARGE_PAYMENT_CHANNEL_WECHAT_NATIVE => claims.is_desktop_wechat_browser_device(), + PROFILE_RECHARGE_PAYMENT_CHANNEL_WECHAT_JSAPI => is_web_recharge_device(claims), + PROFILE_RECHARGE_PAYMENT_CHANNEL_WECHAT_H5 => is_web_recharge_device(claims), + PROFILE_RECHARGE_PAYMENT_CHANNEL_WECHAT_NATIVE => is_web_recharge_device(claims), _ => false, }; if is_supported_device { return Ok(()); } + tracing::warn!( + payment_channel = payment_channel, + client_type = claims.client_type().unwrap_or(""), + client_platform = claims.client_platform().unwrap_or(""), + is_mobile_device = claims.is_mobile_device(), + is_desktop_device = claims.is_desktop_device(), + is_wechat_mini_program_device = claims.is_wechat_mini_program_device(), + "profile recharge payment channel rejected for current login device" + ); + Err(AppError::from_status(StatusCode::FORBIDDEN) .with_message("当前登录设备不支持充值,请在微信环境内登录后重试")) } +fn is_web_recharge_device(claims: &platform_auth::AccessTokenClaims) -> bool { + is_web_recharge_client_type(claims) || is_legacy_web_recharge_device(claims) +} + +fn is_web_recharge_client_type(claims: &platform_auth::AccessTokenClaims) -> bool { + matches!(claims.client_type(), Some("wechat_h5" | "web_browser")) +} + +fn is_legacy_web_recharge_device(claims: &platform_auth::AccessTokenClaims) -> bool { + let legacy_or_unknown_platform = + matches!(claims.client_platform(), None | Some("unknown" | "test")); + legacy_or_unknown_platform && matches!(claims.client_type(), None | Some("web_browser")) +} + fn validate_real_wechat_recharge_payment_provider(state: &AppState) -> Result<(), AppError> { if !state.config.wechat_pay_enabled { return Err(AppError::from_status(StatusCode::SERVICE_UNAVAILABLE) @@ -1353,6 +1380,7 @@ fn is_wechat_recharge_payment_channel(payment_channel: &str) -> bool { payment_channel, PROFILE_RECHARGE_PAYMENT_CHANNEL_WECHAT_MINI_PROGRAM | PROFILE_RECHARGE_PAYMENT_CHANNEL_WECHAT_MINI_PROGRAM_VIRTUAL + | PROFILE_RECHARGE_PAYMENT_CHANNEL_WECHAT_JSAPI | PROFILE_RECHARGE_PAYMENT_CHANNEL_WECHAT_H5 | PROFILE_RECHARGE_PAYMENT_CHANNEL_WECHAT_NATIVE ) @@ -2352,7 +2380,7 @@ mod tests { } #[tokio::test] - async fn profile_recharge_order_rejects_non_wechat_device_before_spacetime() { + async fn profile_recharge_order_rejects_non_web_device_before_spacetime() { let state = seed_authenticated_state_with_config(AppConfig { wechat_pay_enabled: true, wechat_pay_provider: "mock".to_string(), @@ -2360,7 +2388,13 @@ mod tests { ..AppConfig::default() }) .await; - let token = issue_access_token(&state); + let token = issue_device_access_token( + &state, + "native_app", + "native_app", + "windows", + "sess_runtime_profile_native_app", + ); let app = build_router(state); let response = app @@ -2394,7 +2428,93 @@ mod tests { } #[tokio::test] - async fn profile_recharge_order_rejects_mismatched_wechat_channel_before_spacetime() { + async fn profile_recharge_order_allows_legacy_web_session_before_provider_check() { + let state = seed_authenticated_state_with_config(AppConfig { + wechat_pay_enabled: true, + wechat_pay_provider: "mock".to_string(), + spacetime_procedure_timeout: Duration::from_secs(1), + ..AppConfig::default() + }) + .await; + let token = issue_access_token(&state); + let app = build_router(state); + + let response = app + .oneshot( + Request::builder() + .method("POST") + .uri("/api/profile/recharge/orders") + .header("authorization", format!("Bearer {token}")) + .header("content-type", "application/json") + .body(Body::from( + r#"{"productId":"points_60","paymentChannel":"wechat_native"}"#, + )) + .expect("request should build"), + ) + .await + .expect("request should succeed"); + + assert_eq!(response.status(), StatusCode::SERVICE_UNAVAILABLE); + let body = response + .into_body() + .collect() + .await + .expect("body should collect") + .to_bytes(); + let payload: Value = + serde_json::from_slice(&body).expect("response body should be valid json"); + assert_eq!( + payload["error"]["message"], + "真实微信支付渠道不能使用 mock 支付配置" + ); + } + + #[tokio::test] + async fn profile_recharge_order_allows_legacy_web_unknown_platform_before_provider_check() { + let state = seed_authenticated_state_with_config(AppConfig { + wechat_pay_enabled: true, + wechat_pay_provider: "mock".to_string(), + spacetime_procedure_timeout: Duration::from_secs(1), + ..AppConfig::default() + }) + .await; + let token = + issue_web_browser_access_token(&state, "test", "sess_runtime_profile_legacy_web"); + let app = build_router(state); + + let response = app + .oneshot( + Request::builder() + .method("POST") + .uri("/api/profile/recharge/orders") + .header("authorization", format!("Bearer {token}")) + .header("content-type", "application/json") + .body(Body::from( + r#"{"productId":"points_60","paymentChannel":"wechat_native"}"#, + )) + .expect("request should build"), + ) + .await + .expect("request should succeed"); + + assert_eq!(response.status(), StatusCode::SERVICE_UNAVAILABLE); + let body = response + .into_body() + .collect() + .await + .expect("body should collect") + .to_bytes(); + let payload: Value = + serde_json::from_slice(&body).expect("response body should be valid json"); + assert_eq!( + payload["error"]["message"], + "真实微信支付渠道不能使用 mock 支付配置" + ); + } + + #[tokio::test] + async fn profile_recharge_order_rejects_web_device_using_mini_program_channel_before_spacetime() + { let state = seed_authenticated_state_with_config(AppConfig { wechat_pay_enabled: true, wechat_pay_provider: "mock".to_string(), @@ -2413,7 +2533,7 @@ mod tests { .header("authorization", format!("Bearer {token}")) .header("content-type", "application/json") .body(Body::from( - r#"{"productId":"points_60","paymentChannel":"wechat_native"}"#, + r#"{"productId":"points_60","paymentChannel":"wechat_mp_virtual"}"#, )) .expect("request should build"), ) @@ -2478,6 +2598,181 @@ mod tests { ); } + #[tokio::test] + async fn profile_recharge_order_allows_mobile_web_h5_channel_before_provider_check() { + let state = seed_authenticated_state_with_config(AppConfig { + wechat_pay_enabled: true, + wechat_pay_provider: "mock".to_string(), + spacetime_procedure_timeout: Duration::from_secs(1), + ..AppConfig::default() + }) + .await; + let token = + issue_web_browser_access_token(&state, "ios", "sess_runtime_profile_mobile_web"); + let app = build_router(state); + + let response = app + .oneshot( + Request::builder() + .method("POST") + .uri("/api/profile/recharge/orders") + .header("authorization", format!("Bearer {token}")) + .header("content-type", "application/json") + .body(Body::from( + r#"{"productId":"points_60","paymentChannel":"wechat_h5"}"#, + )) + .expect("request should build"), + ) + .await + .expect("request should succeed"); + + assert_eq!(response.status(), StatusCode::SERVICE_UNAVAILABLE); + let body = response + .into_body() + .collect() + .await + .expect("body should collect") + .to_bytes(); + let payload: Value = + serde_json::from_slice(&body).expect("response body should be valid json"); + assert_eq!( + payload["error"]["message"], + "真实微信支付渠道不能使用 mock 支付配置" + ); + } + + #[tokio::test] + async fn profile_recharge_order_allows_desktop_web_native_channel_before_provider_check() { + let state = seed_authenticated_state_with_config(AppConfig { + wechat_pay_enabled: true, + wechat_pay_provider: "mock".to_string(), + spacetime_procedure_timeout: Duration::from_secs(1), + ..AppConfig::default() + }) + .await; + let token = + issue_web_browser_access_token(&state, "windows", "sess_runtime_profile_desktop_web"); + let app = build_router(state); + + let response = app + .oneshot( + Request::builder() + .method("POST") + .uri("/api/profile/recharge/orders") + .header("authorization", format!("Bearer {token}")) + .header("content-type", "application/json") + .body(Body::from( + r#"{"productId":"points_60","paymentChannel":"wechat_native"}"#, + )) + .expect("request should build"), + ) + .await + .expect("request should succeed"); + + assert_eq!(response.status(), StatusCode::SERVICE_UNAVAILABLE); + let body = response + .into_body() + .collect() + .await + .expect("body should collect") + .to_bytes(); + let payload: Value = + serde_json::from_slice(&body).expect("response body should be valid json"); + assert_eq!( + payload["error"]["message"], + "真实微信支付渠道不能使用 mock 支付配置" + ); + } + + #[tokio::test] + async fn profile_recharge_order_allows_mobile_web_native_channel_before_provider_check() { + let state = seed_authenticated_state_with_config(AppConfig { + wechat_pay_enabled: true, + wechat_pay_provider: "mock".to_string(), + spacetime_procedure_timeout: Duration::from_secs(1), + ..AppConfig::default() + }) + .await; + let token = + issue_web_browser_access_token(&state, "ios", "sess_runtime_profile_mobile_web_native"); + let app = build_router(state); + + let response = app + .oneshot( + Request::builder() + .method("POST") + .uri("/api/profile/recharge/orders") + .header("authorization", format!("Bearer {token}")) + .header("content-type", "application/json") + .body(Body::from( + r#"{"productId":"points_60","paymentChannel":"wechat_native"}"#, + )) + .expect("request should build"), + ) + .await + .expect("request should succeed"); + + assert_eq!(response.status(), StatusCode::SERVICE_UNAVAILABLE); + let body = response + .into_body() + .collect() + .await + .expect("body should collect") + .to_bytes(); + let payload: Value = + serde_json::from_slice(&body).expect("response body should be valid json"); + assert_eq!( + payload["error"]["message"], + "真实微信支付渠道不能使用 mock 支付配置" + ); + } + + #[tokio::test] + async fn profile_recharge_order_allows_desktop_web_h5_channel_before_provider_check() { + let state = seed_authenticated_state_with_config(AppConfig { + wechat_pay_enabled: true, + wechat_pay_provider: "mock".to_string(), + spacetime_procedure_timeout: Duration::from_secs(1), + ..AppConfig::default() + }) + .await; + let token = issue_web_browser_access_token( + &state, + "windows", + "sess_runtime_profile_desktop_web_h5", + ); + let app = build_router(state); + + let response = app + .oneshot( + Request::builder() + .method("POST") + .uri("/api/profile/recharge/orders") + .header("authorization", format!("Bearer {token}")) + .header("content-type", "application/json") + .body(Body::from( + r#"{"productId":"points_60","paymentChannel":"wechat_h5"}"#, + )) + .expect("request should build"), + ) + .await + .expect("request should succeed"); + + assert_eq!(response.status(), StatusCode::SERVICE_UNAVAILABLE); + let body = response + .into_body() + .collect() + .await + .expect("body should collect") + .to_bytes(); + let payload: Value = + serde_json::from_slice(&body).expect("response body should be valid json"); + assert_eq!( + payload["error"]["message"], + "真实微信支付渠道不能使用 mock 支付配置" + ); + } + #[tokio::test] async fn profile_recharge_order_rejects_real_wechat_channel_when_pay_provider_is_mock() { let state = seed_authenticated_state_with_config(AppConfig { @@ -3203,6 +3498,68 @@ mod tests { sign_access_token(&claims, state.auth_jwt_config()).expect("token should sign") } + fn issue_device_access_token( + state: &AppState, + client_type: &str, + client_runtime: &str, + client_platform: &str, + session_id: &str, + ) -> String { + let user_id = test_authenticated_user_id(state); + let claims = AccessTokenClaims::from_input_with_device( + AccessTokenClaimsInput { + user_id: user_id.clone(), + session_id: state.seed_test_refresh_session_for_user_id(&user_id, session_id), + provider: AuthProvider::Password, + roles: vec!["user".to_string()], + token_version: 2, + phone_verified: true, + binding_status: BindingStatus::Active, + display_name: Some("设备资料页用户".to_string()), + }, + Some(platform_auth::AccessTokenDeviceInfo { + client_type: client_type.to_string(), + client_runtime: client_runtime.to_string(), + client_platform: client_platform.to_string(), + }), + state.auth_jwt_config(), + OffsetDateTime::now_utc(), + ) + .expect("claims should build"); + + sign_access_token(&claims, state.auth_jwt_config()).expect("token should sign") + } + + fn issue_web_browser_access_token( + state: &AppState, + client_platform: &str, + session_id: &str, + ) -> String { + let user_id = test_authenticated_user_id(state); + let claims = AccessTokenClaims::from_input_with_device( + AccessTokenClaimsInput { + user_id: user_id.clone(), + session_id: state.seed_test_refresh_session_for_user_id(&user_id, session_id), + provider: AuthProvider::Password, + roles: vec!["user".to_string()], + token_version: 2, + phone_verified: true, + binding_status: BindingStatus::Active, + display_name: Some("网页资料页用户".to_string()), + }, + Some(platform_auth::AccessTokenDeviceInfo { + client_type: "web_browser".to_string(), + client_runtime: "web".to_string(), + client_platform: client_platform.to_string(), + }), + state.auth_jwt_config(), + OffsetDateTime::now_utc(), + ) + .expect("claims should build"); + + sign_access_token(&claims, state.auth_jwt_config()).expect("token should sign") + } + fn test_authenticated_user_id(state: &AppState) -> String { state .auth_user_service() diff --git a/server-rs/crates/api-server/src/wechat/auth.rs b/server-rs/crates/api-server/src/wechat/auth.rs index c5d8437d3..b2571903c 100644 --- a/server-rs/crates/api-server/src/wechat/auth.rs +++ b/server-rs/crates/api-server/src/wechat/auth.rs @@ -5,7 +5,7 @@ response::{IntoResponse, Redirect, Response}, }; use module_auth::{ - AuthLoginMethod, BindWechatPhoneInput, BindWechatVerifiedPhoneInput, + AuthLoginMethod, BindWechatIdentityInput, BindWechatPhoneInput, BindWechatVerifiedPhoneInput, CreateWechatAuthStateInput, WechatAuthError, }; use platform_auth::WechatAuthScene; @@ -57,6 +57,52 @@ pub async fn start_wechat_login( ), scene: map_wechat_scene_to_domain(&scene), request_user_agent: user_agent.clone(), + bind_user_id: None, + }, + OffsetDateTime::now_utc(), + ) + .map_err(map_wechat_auth_error)?; + let authorization_url = state + .wechat_provider() + .build_authorization_url( + &resolve_wechat_callback_url(&state, &headers)?, + &state_record.state.state_token, + &scene, + ) + .map_err(map_wechat_provider_error)?; + + Ok(json_success_body( + Some(&request_context), + WechatStartResponse { authorization_url }, + )) +} + +pub async fn start_wechat_bind( + State(state): State, + Extension(request_context): Extension, + Extension(authenticated): Extension, + headers: HeaderMap, + Query(query): Query, +) -> Result, AppError> { + if !state.config.wechat_auth_enabled { + return Err(AppError::from_status(StatusCode::BAD_REQUEST).with_message("微信登录暂未启用")); + } + let user_agent = headers + .get("user-agent") + .and_then(|value| value.to_str().ok()) + .map(|value| value.to_string()); + let scene = resolve_wechat_scene(user_agent.as_deref())?; + let state_record = state + .wechat_auth_state_service() + .create_state( + CreateWechatAuthStateInput { + redirect_path: normalize_redirect_path( + query.redirect_path.as_deref(), + &state.config.wechat_redirect_path, + ), + scene: map_wechat_scene_to_domain(&scene), + request_user_agent: user_agent.clone(), + bind_user_id: Some(authenticated.claims().user_id().to_string()), }, OffsetDateTime::now_utc(), ) @@ -128,23 +174,39 @@ pub async fn handle_wechat_callback( .resolve_callback_profile(query.code.as_deref(), query.mock_code.as_deref()) .await { - Ok(profile) => state - .wechat_auth_service() - .resolve_login(module_auth::ResolveWechatLoginInput { - profile: map_wechat_profile_to_domain(profile), - }) - .await - .map_err(map_wechat_auth_error), + Ok(profile) => { + let profile = map_wechat_profile_to_domain(profile); + if let Some(bind_user_id) = consumed.state.bind_user_id.as_deref() { + state + .wechat_auth_service() + .bind_identity_to_user(BindWechatIdentityInput { + user_id: bind_user_id.to_string(), + profile, + }) + .map(|user| module_auth::ResolveWechatLoginResult { + user, + created: false, + }) + .map_err(map_wechat_auth_error) + } else { + state + .wechat_auth_service() + .resolve_login(module_auth::ResolveWechatLoginInput { profile }) + .await + .map_err(map_wechat_auth_error) + } + } Err(error) => Err(map_wechat_provider_error(error)), }; match result { Ok(result) => { + let session_provider = result.user.login_method.clone(); let signed_session = create_auth_session( &state, &result.user, &session_client, - AuthLoginMethod::Wechat, + session_provider.clone(), )?; state .sync_auth_store_tables_to_spacetime() @@ -157,7 +219,7 @@ pub async fn handle_wechat_callback( &state, &request_context, &result.user.id, - AuthLoginMethod::Wechat, + session_provider, ) .await; let mut response = Redirect::to(&build_auth_result_redirect_url( @@ -478,7 +540,8 @@ fn map_wechat_auth_error(error: WechatAuthError) -> AppError { | WechatAuthError::StateNotFound | WechatAuthError::StateExpired | WechatAuthError::StateConsumed - | WechatAuthError::MissingWechatIdentity => { + | WechatAuthError::MissingWechatIdentity + | WechatAuthError::WechatIdentityAlreadyBound => { AppError::from_status(StatusCode::BAD_REQUEST).with_message(error.to_string()) } WechatAuthError::UserNotFound => { diff --git a/server-rs/crates/api-server/src/wechat/pay.rs b/server-rs/crates/api-server/src/wechat/pay.rs index 438a439d0..151ba77c0 100644 --- a/server-rs/crates/api-server/src/wechat/pay.rs +++ b/server-rs/crates/api-server/src/wechat/pay.rs @@ -70,6 +70,7 @@ pub async fn handle_wechat_pay_notify( AppError::from_status(StatusCode::BAD_GATEWAY) .with_message(format!("确认微信支付订单失败:{error}")) })?; + state.publish_profile_recharge_order_update(notify.out_trade_no.clone()); info!( order_id = notify.out_trade_no.as_str(), "微信支付通知已确认订单入账" @@ -260,6 +261,9 @@ pub fn map_wechat_pay_error(error: WechatPayError) -> AppError { WechatPayError::InvalidRequest(message) => AppError::from_status(StatusCode::BAD_REQUEST) .with_message(message) .with_details(json!({ "provider": "wechat_pay" })), + WechatPayError::OrderNotExist(message) => AppError::from_status(StatusCode::NOT_FOUND) + .with_message(message) + .with_details(json!({ "provider": "wechat_pay", "code": "ORDER_NOT_EXIST" })), WechatPayError::RequestFailed(message) | WechatPayError::Upstream(message) | WechatPayError::Deserialize(message) @@ -331,6 +335,7 @@ fn build_wechat_message_push_verify_error_response(error: WechatPayError) -> Res WechatPayError::Disabled => "微信消息推送暂未启用".to_string(), WechatPayError::InvalidConfig(message) | WechatPayError::InvalidRequest(message) + | WechatPayError::OrderNotExist(message) | WechatPayError::RequestFailed(message) | WechatPayError::Upstream(message) | WechatPayError::Deserialize(message) @@ -349,6 +354,7 @@ fn build_virtual_payment_notify_error_response( WechatPayError::Disabled => "微信虚拟支付暂未启用".to_string(), WechatPayError::InvalidConfig(message) | WechatPayError::InvalidRequest(message) + | WechatPayError::OrderNotExist(message) | WechatPayError::RequestFailed(message) | WechatPayError::Upstream(message) | WechatPayError::Deserialize(message) diff --git a/server-rs/crates/module-auth/src/commands.rs b/server-rs/crates/module-auth/src/commands.rs index e7e67fb9b..6706afe65 100644 --- a/server-rs/crates/module-auth/src/commands.rs +++ b/server-rs/crates/module-auth/src/commands.rs @@ -51,11 +51,18 @@ pub struct ResolveWechatLoginInput { pub profile: WechatIdentityProfile, } +#[derive(Clone, Debug, PartialEq, Eq)] +pub struct BindWechatIdentityInput { + pub user_id: String, + pub profile: WechatIdentityProfile, +} + #[derive(Clone, Debug, PartialEq, Eq)] pub struct CreateWechatAuthStateInput { pub redirect_path: String, pub scene: WechatAuthScene, pub request_user_agent: Option, + pub bind_user_id: Option, } #[derive(Clone, Debug, PartialEq, Eq)] diff --git a/server-rs/crates/module-auth/src/domain.rs b/server-rs/crates/module-auth/src/domain.rs index d9563a1b8..1321b9824 100644 --- a/server-rs/crates/module-auth/src/domain.rs +++ b/server-rs/crates/module-auth/src/domain.rs @@ -142,6 +142,7 @@ pub struct WechatAuthStateRecord { pub redirect_path: String, pub scene: WechatAuthScene, pub request_user_agent: Option, + pub bind_user_id: Option, pub expires_at: String, pub consumed_at: Option, pub created_at: String, diff --git a/server-rs/crates/module-auth/src/errors.rs b/server-rs/crates/module-auth/src/errors.rs index 2cb61cb35..1757606ca 100644 --- a/server-rs/crates/module-auth/src/errors.rs +++ b/server-rs/crates/module-auth/src/errors.rs @@ -42,6 +42,7 @@ pub enum WechatAuthError { StateConsumed, UserNotFound, MissingWechatIdentity, + WechatIdentityAlreadyBound, Store(String), PasswordHash(String), } @@ -109,6 +110,7 @@ impl fmt::Display for WechatAuthError { Self::StateConsumed => f.write_str("微信登录状态已被消费,请重新发起登录"), Self::UserNotFound => f.write_str("用户不存在"), Self::MissingWechatIdentity => f.write_str("当前账号缺少微信身份"), + Self::WechatIdentityAlreadyBound => f.write_str("该微信身份已绑定其他账号"), Self::Store(message) | Self::PasswordHash(message) => f.write_str(message), } } diff --git a/server-rs/crates/module-auth/src/lib.rs b/server-rs/crates/module-auth/src/lib.rs index 0b9c93a83..6682c8406 100644 --- a/server-rs/crates/module-auth/src/lib.rs +++ b/server-rs/crates/module-auth/src/lib.rs @@ -793,6 +793,7 @@ impl WechatAuthStateService { redirect_path: normalize_required_string(&input.redirect_path).unwrap_or_default(), scene: input.scene, request_user_agent: normalize_optional_string(input.request_user_agent), + bind_user_id: normalize_optional_string(input.bind_user_id), expires_at, consumed_at: None, created_at: created_at.clone(), @@ -858,6 +859,17 @@ impl WechatAuthService { }) } + pub fn bind_identity_to_user( + &self, + input: BindWechatIdentityInput, + ) -> Result { + if input.profile.provider_uid.trim().is_empty() { + return Err(WechatAuthError::MissingProfile); + } + self.store + .bind_wechat_identity_to_user(&input.user_id, input.profile) + } + pub fn get_identity_by_user_id( &self, user_id: &str, @@ -1691,6 +1703,103 @@ impl InMemoryAuthStore { })) } + fn bind_wechat_identity_to_user( + &self, + user_id: &str, + profile: WechatIdentityProfile, + ) -> Result { + let user_id = normalize_required_string(user_id).ok_or(WechatAuthError::UserNotFound)?; + let provider_uid = normalize_required_string(&profile.provider_uid) + .ok_or(WechatAuthError::MissingProfile)?; + let provider_union_id = normalize_optional_string(profile.provider_union_id); + let display_name = normalize_optional_string(profile.display_name); + let avatar_url = normalize_optional_string(profile.avatar_url); + let session_key = normalize_optional_string(profile.session_key); + + let mut state = self + .inner + .lock() + .map_err(|_| WechatAuthError::Store("鐢ㄦ埛浠撳偍閿佸凡涓瘨".to_string()))?; + + if !state + .users_by_username + .values() + .any(|stored_user| stored_user.user.id == user_id) + { + return Err(WechatAuthError::UserNotFound); + } + + if let Some(existing) = state.wechat_identity_by_provider_uid.get(&provider_uid) + && existing.user_id != user_id + { + return Err(WechatAuthError::WechatIdentityAlreadyBound); + } + if let Some(provider_union_id) = provider_union_id.as_deref() + && let Some(existing_user_id) = + state.user_id_by_provider_union_id.get(provider_union_id) + && existing_user_id != &user_id + { + return Err(WechatAuthError::WechatIdentityAlreadyBound); + } + + if let Some(existing_identity) = state + .wechat_identity_by_provider_uid + .values() + .find(|identity| identity.user_id == user_id) + .cloned() + { + state + .wechat_identity_by_provider_uid + .remove(&existing_identity.provider_uid); + if let Some(existing_union_id) = existing_identity.provider_union_id + && provider_union_id.as_deref() != Some(existing_union_id.as_str()) + { + state + .user_id_by_provider_union_id + .remove(&existing_union_id); + } + } + + state.wechat_identity_by_provider_uid.insert( + provider_uid.clone(), + StoredWechatIdentity { + user_id: user_id.clone(), + provider_uid: provider_uid.clone(), + provider_union_id: provider_union_id.clone(), + display_name: display_name.clone(), + avatar_url: avatar_url.clone(), + session_key, + }, + ); + if let Some(provider_union_id) = provider_union_id { + state + .user_id_by_provider_union_id + .insert(provider_union_id, user_id.clone()); + } + + let next_user = { + let stored_user = state + .users_by_username + .values_mut() + .find(|stored_user| stored_user.user.id == user_id) + .ok_or(WechatAuthError::UserNotFound)?; + stored_user.user.wechat_bound = true; + stored_user.user.wechat_account = Some(provider_uid); + if let Some(display_name) = display_name { + stored_user.user.wechat_display_name = Some(display_name); + } + if stored_user.user.avatar_url.is_none() + && let Some(avatar_url) = avatar_url + { + stored_user.user.avatar_url = Some(avatar_url); + } + stored_user.user.clone() + }; + self.persist_wechat_state(&state)?; + + Ok(next_user) + } + fn refresh_wechat_identity_profile( &self, user_id: &str, diff --git a/server-rs/crates/module-runtime/src/commands.rs b/server-rs/crates/module-runtime/src/commands.rs index 496a246ca..70fb73958 100644 --- a/server-rs/crates/module-runtime/src/commands.rs +++ b/server-rs/crates/module-runtime/src/commands.rs @@ -397,6 +397,42 @@ pub fn build_runtime_profile_recharge_order_paid_input( }) } +pub fn build_runtime_profile_recharge_order_close_input( + order_id: String, + closed_at_micros: i64, +) -> Result { + let order_id = + normalize_required_string(order_id).ok_or(RuntimeProfileFieldError::MissingOrderId)?; + Ok(RuntimeProfileRechargeOrderCloseInput { + order_id, + closed_at_micros, + }) +} + +pub fn build_runtime_profile_recharge_order_expiration_claim_input( + worker_id: String, + now_micros: i64, + lease_expires_at_micros: i64, + limit: u32, +) -> Result { + let worker_id = + normalize_required_string(worker_id).ok_or(RuntimeProfileFieldError::MissingWorkerId)?; + Ok(RuntimeProfileRechargeOrderExpirationClaimInput { + worker_id, + now_micros, + lease_expires_at_micros, + limit, + }) +} + +pub fn build_runtime_profile_recharge_order_expiration_complete_input( + order_id: String, +) -> Result { + let order_id = + normalize_required_string(order_id).ok_or(RuntimeProfileFieldError::MissingOrderId)?; + Ok(RuntimeProfileRechargeOrderExpirationCompleteInput { order_id }) +} + pub fn build_runtime_profile_feedback_submission_input( user_id: String, description: String, diff --git a/server-rs/crates/module-runtime/src/domain.rs b/server-rs/crates/module-runtime/src/domain.rs index e2487f580..928a83252 100644 --- a/server-rs/crates/module-runtime/src/domain.rs +++ b/server-rs/crates/module-runtime/src/domain.rs @@ -36,8 +36,10 @@ pub const DEFAULT_SAVE_ARCHIVE_SUMMARY_TEXT: &str = "继续推进上一次保存 pub const PROFILE_RECHARGE_PAYMENT_CHANNEL_MOCK: &str = "mock"; pub const PROFILE_RECHARGE_PAYMENT_CHANNEL_WECHAT_MINI_PROGRAM: &str = "wechat_mp"; pub const PROFILE_RECHARGE_PAYMENT_CHANNEL_WECHAT_MINI_PROGRAM_VIRTUAL: &str = "wechat_mp_virtual"; +pub const PROFILE_RECHARGE_PAYMENT_CHANNEL_WECHAT_JSAPI: &str = "wechat_jsapi"; pub const PROFILE_RECHARGE_PAYMENT_CHANNEL_WECHAT_H5: &str = "wechat_h5"; pub const PROFILE_RECHARGE_PAYMENT_CHANNEL_WECHAT_NATIVE: &str = "wechat_native"; +pub const PROFILE_RECHARGE_ORDER_EXPIRATION_SECONDS: i64 = 5 * 60; pub const PROFILE_FEEDBACK_DESCRIPTION_MIN_CHARS: usize = 10; pub const PROFILE_FEEDBACK_DESCRIPTION_MAX_CHARS: usize = 200; pub const PROFILE_FEEDBACK_CONTACT_PHONE_MAX_CHARS: usize = 40; @@ -1358,6 +1360,55 @@ pub struct RuntimeProfileRechargeOrderPaidInput { pub provider_transaction_id: Option, } +#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))] +#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] +pub struct RuntimeProfileRechargeOrderCloseInput { + pub order_id: String, + pub closed_at_micros: i64, +} + +#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))] +#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] +pub struct RuntimeProfileRechargeOrderExpirationClaimInput { + pub worker_id: String, + pub now_micros: i64, + pub lease_expires_at_micros: i64, + pub limit: u32, +} + +#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))] +#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] +pub struct RuntimeProfileRechargeOrderExpirationCompleteInput { + pub order_id: String, +} + +#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))] +#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] +pub struct RuntimeProfileRechargeOrderExpirationScheduleSnapshot { + pub order_id: String, + pub user_id: String, + pub scheduled_at_micros: i64, + pub lease_owner: Option, + pub lease_expires_at_micros: Option, + pub created_at_micros: i64, + pub updated_at_micros: i64, +} + +#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))] +#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] +pub struct RuntimeProfileRechargeOrderExpirationClaimProcedureResult { + pub ok: bool, + pub entries: Vec, + pub error_message: Option, +} + +#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))] +#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] +pub struct RuntimeProfileRechargeOrderExpirationCompleteProcedureResult { + pub ok: bool, + pub error_message: Option, +} + #[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))] #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] pub struct RuntimeProfileWalletLedgerEntrySnapshot { diff --git a/server-rs/crates/module-runtime/src/errors.rs b/server-rs/crates/module-runtime/src/errors.rs index 4154505cb..c98e43eb5 100644 --- a/server-rs/crates/module-runtime/src/errors.rs +++ b/server-rs/crates/module-runtime/src/errors.rs @@ -74,6 +74,7 @@ pub enum RuntimeProfileFieldError { TaskDisabled, TaskNotClaimable, TaskAlreadyClaimed, + MissingWorkerId, MissingOrderId, MissingProductId, MissingProductTitle, @@ -149,6 +150,7 @@ impl std::fmt::Display for RuntimeProfileFieldError { Self::TaskDisabled => f.write_str("任务已停用"), Self::TaskNotClaimable => f.write_str("任务尚未达成"), Self::TaskAlreadyClaimed => f.write_str("任务奖励已领取"), + Self::MissingWorkerId => f.write_str("worker_id 不能为空"), Self::MissingOrderId => f.write_str("recharge.order_id 不能为空"), Self::MissingProductId => f.write_str("recharge.product_id 不能为空"), Self::MissingProductTitle => f.write_str("recharge.product_title 不能为空"), diff --git a/server-rs/crates/platform-wechat/Cargo.toml b/server-rs/crates/platform-wechat/Cargo.toml index 5d1dd7b8b..760bb2387 100644 --- a/server-rs/crates/platform-wechat/Cargo.toml +++ b/server-rs/crates/platform-wechat/Cargo.toml @@ -16,7 +16,7 @@ serde_json = { workspace = true } sha1 = { workspace = true } sha2 = { workspace = true } shared-contracts = { workspace = true } -time = { workspace = true } +time = { workspace = true, features = ["formatting"] } tracing = { workspace = true } url = { workspace = true } urlencoding = { workspace = true } diff --git a/server-rs/crates/platform-wechat/src/pay.rs b/server-rs/crates/platform-wechat/src/pay.rs index 44c5aa518..bcd897440 100644 --- a/server-rs/crates/platform-wechat/src/pay.rs +++ b/server-rs/crates/platform-wechat/src/pay.rs @@ -24,7 +24,7 @@ use shared_contracts::runtime::{ WechatH5PaymentResponse, WechatMiniProgramPayParamsResponse, WechatNativePaymentResponse, }; use std::convert::TryInto; -use time::OffsetDateTime; +use time::{Duration as TimeDuration, OffsetDateTime, format_description::well_known::Rfc3339}; use tracing::warn; use url::Url; @@ -47,6 +47,7 @@ const WECHAT_PAY_CLIENT_IP_MAX_CHARS: usize = 45; const WECHAT_PAY_JSAPI_PATH: &str = "/v3/pay/transactions/jsapi"; const WECHAT_PAY_H5_PATH: &str = "/v3/pay/transactions/h5"; const WECHAT_PAY_NATIVE_PATH: &str = "/v3/pay/transactions/native"; +const WECHAT_NATIVE_PAY_EXPIRE_SECONDS: i64 = 5 * 60; const WECHAT_MINIPROGRAM_MESSAGE_ENCODING_AES_KEY_BYTES: usize = 43; const WECHAT_MINIPROGRAM_MESSAGE_AES_KEY_BYTES: usize = 32; const WECHAT_MINIPROGRAM_MESSAGE_RANDOM_BYTES: usize = 16; @@ -134,6 +135,7 @@ pub enum WechatPayError { Disabled, InvalidConfig(String), InvalidRequest(String), + OrderNotExist(String), RequestFailed(String), Upstream(String), Deserialize(String), @@ -192,6 +194,7 @@ struct WechatNativeOrderRequest<'a> { mchid: &'a str, description: &'a str, out_trade_no: &'a str, + time_expire: &'a str, notify_url: &'a str, amount: WechatJsapiAmount, scene_info: WechatNativeSceneInfo<'a>, @@ -257,6 +260,14 @@ struct WechatPayQueryOrderResponse { success_time: Option, } +#[derive(Deserialize)] +struct WechatPayErrorResponse { + #[serde(default)] + code: Option, + #[serde(default)] + message: Option, +} + #[derive(Deserialize)] struct WechatVirtualPaymentNotifyBody { #[serde(rename = "Event", alias = "event")] @@ -569,11 +580,16 @@ impl RealWechatPayClient { validate_web_order_request(self, &request)?; let amount_total = i64::try_from(request.amount_cents) .map_err(|_| WechatPayError::InvalidRequest("微信支付金额超出 i64 范围".to_string()))?; + let expires_at = + OffsetDateTime::now_utc() + TimeDuration::seconds(WECHAT_NATIVE_PAY_EXPIRE_SECONDS); + let expires_at_text = + format_wechat_pay_rfc3339_seconds(expires_at, "微信支付 Native 过期时间")?; let body = serde_json::to_string(&WechatNativeOrderRequest { appid: &self.app_id, mchid: &self.mch_id, description: &request.description, out_trade_no: &request.order_id, + time_expire: &expires_at_text, notify_url: &self.notify_url, amount: WechatJsapiAmount { total: amount_total, @@ -611,7 +627,10 @@ impl RealWechatPayClient { ) })?; - Ok(WechatNativePaymentResponse { code_url }) + Ok(WechatNativePaymentResponse { + code_url, + expires_at: expires_at_text, + }) } async fn post_wechat_json( @@ -680,6 +699,7 @@ impl RealWechatPayClient { let pay_sign = self.sign_message(&message)?; Ok(WechatMiniProgramPayParamsResponse { + app_id: Some(self.app_id.clone()), time_stamp, nonce_str, package, @@ -755,6 +775,17 @@ impl RealWechatPayClient { WechatPayError::Deserialize(format!("微信支付查单响应读取失败:{error}")) })?; if !status.is_success() { + if let Ok(payload) = serde_json::from_str::(&response_text) + && payload.code.as_deref() == Some("ORDER_NOT_EXIST") + { + return Err(WechatPayError::OrderNotExist( + payload + .message + .filter(|message| !message.trim().is_empty()) + .unwrap_or_else(|| "微信支付订单不存在".to_string()), + )); + } + return Err(WechatPayError::Upstream(format!( "微信支付查单失败:HTTP {status},{response_text}" ))); @@ -856,6 +887,7 @@ fn build_mock_pay_params(order_id: &str) -> WechatMiniProgramPayParamsResponse { let pay_sign = hex_sha256(format!("{time_stamp}\n{nonce_str}\n{package}\n").as_bytes()); WechatMiniProgramPayParamsResponse { + app_id: Some("wx-mock-app".to_string()), time_stamp, nonce_str, package, @@ -873,12 +905,28 @@ fn build_mock_h5_payment(order_id: &str) -> WechatH5PaymentResponse { } } +fn format_wechat_pay_rfc3339_seconds( + value: OffsetDateTime, + context: &str, +) -> Result { + let value = value.replace_nanosecond(0).map_err(|error| { + WechatPayError::InvalidRequest(format!("{context} 秒级时间规整失败:{error}")) + })?; + value + .format(&Rfc3339) + .map_err(|error| WechatPayError::InvalidRequest(format!("{context} 格式化失败:{error}"))) +} + fn build_mock_native_payment(order_id: &str) -> WechatNativePaymentResponse { + let expires_at = + OffsetDateTime::now_utc() + TimeDuration::seconds(WECHAT_NATIVE_PAY_EXPIRE_SECONDS); WechatNativePaymentResponse { code_url: format!( "weixin://pay.weixin.qq.com/bizpayurl/up?pr=mock-{}", hex_sha256(order_id.as_bytes()) ), + expires_at: format_wechat_pay_rfc3339_seconds(expires_at, "mock 微信支付 Native 过期时间") + .unwrap_or_else(|_| expires_at.to_string()), } } @@ -1552,6 +1600,7 @@ impl std::fmt::Display for WechatPayError { Self::Disabled => formatter.write_str("微信支付暂未启用"), Self::InvalidConfig(message) | Self::InvalidRequest(message) + | Self::OrderNotExist(message) | Self::RequestFailed(message) | Self::Upstream(message) | Self::Deserialize(message) @@ -1639,6 +1688,7 @@ mod tests { mchid: "1900000001", description: "陶泥儿 - 60泥点", out_trade_no: "rcgtest001", + time_expire: "2026-05-15T10:05:00Z", notify_url: "https://api.example.com/api/profile/recharge/wechat/notify", amount: WechatJsapiAmount { total: 600, @@ -1655,12 +1705,27 @@ mod tests { .expect("Native order response should deserialize"); assert_eq!(body["scene_info"]["payer_client_ip"], "203.0.113.10"); + assert_eq!(body["time_expire"], "2026-05-15T10:05:00Z"); assert_eq!( response.code_url.as_deref(), Some("weixin://pay.weixin.qq.com/bizpayurl/up?pr=test") ); } + #[test] + fn wechat_pay_expire_time_uses_rfc3339_without_fractional_seconds() { + let value = OffsetDateTime::from_unix_timestamp(1_768_398_476) + .expect("timestamp should be valid") + .replace_nanosecond(395_297_400) + .expect("nanosecond should be valid"); + + let formatted = + format_wechat_pay_rfc3339_seconds(value, "测试时间").expect("time should format"); + + assert_eq!(formatted, "2026-01-14T13:47:56Z"); + assert!(!formatted.contains('.')); + } + #[test] fn transaction_endpoints_reuse_configured_wechat_pay_origin() { let h5_endpoint = resolve_wechat_pay_transaction_endpoint( diff --git a/server-rs/crates/shared-contracts/src/runtime.rs b/server-rs/crates/shared-contracts/src/runtime.rs index c8b99dee6..6e9a96bf1 100644 --- a/server-rs/crates/shared-contracts/src/runtime.rs +++ b/server-rs/crates/shared-contracts/src/runtime.rs @@ -238,6 +238,8 @@ pub struct ProfileRechargeOrderResponse { #[derive(Clone, Debug, Serialize, Deserialize, PartialEq)] #[serde(rename_all = "camelCase")] pub struct WechatMiniProgramPayParamsResponse { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub app_id: Option, pub time_stamp: String, pub nonce_str: String, pub package: String, @@ -271,6 +273,7 @@ pub struct WechatH5PaymentResponse { #[serde(rename_all = "camelCase")] pub struct WechatNativePaymentResponse { pub code_url: String, + pub expires_at: String, } #[derive(Clone, Debug, Serialize, Deserialize, PartialEq)] @@ -1496,6 +1499,7 @@ mod tests { }), wechat_native_payment: Some(WechatNativePaymentResponse { code_url: "weixin://pay.weixin.qq.com/bizpayurl/up?pr=test".to_string(), + expires_at: "2026-05-15T10:05:00Z".to_string(), }), }) .expect("payload should serialize"); @@ -1508,6 +1512,10 @@ mod tests { payload["wechatNativePayment"]["codeUrl"], json!("weixin://pay.weixin.qq.com/bizpayurl/up?pr=test") ); + assert_eq!( + payload["wechatNativePayment"]["expiresAt"], + json!("2026-05-15T10:05:00Z") + ); } #[test] diff --git a/server-rs/crates/spacetime-client/src/lib.rs b/server-rs/crates/spacetime-client/src/lib.rs index 1977dcc76..aa2977862 100644 --- a/server-rs/crates/spacetime-client/src/lib.rs +++ b/server-rs/crates/spacetime-client/src/lib.rs @@ -231,7 +231,10 @@ use module_runtime::{ build_runtime_profile_invite_code_admin_upsert_input, build_runtime_profile_invite_code_record, build_runtime_profile_play_stats_get_input, build_runtime_profile_play_stats_record, build_runtime_profile_recharge_center_get_input, build_runtime_profile_recharge_center_record, + build_runtime_profile_recharge_order_close_input, build_runtime_profile_recharge_order_create_input, + build_runtime_profile_recharge_order_expiration_claim_input, + build_runtime_profile_recharge_order_expiration_complete_input, build_runtime_profile_recharge_order_get_input, build_runtime_profile_recharge_product_admin_list_input, build_runtime_profile_recharge_product_admin_upsert_input, diff --git a/server-rs/crates/spacetime-client/src/mapper.rs b/server-rs/crates/spacetime-client/src/mapper.rs index cf4462144..b67319bdf 100644 --- a/server-rs/crates/spacetime-client/src/mapper.rs +++ b/server-rs/crates/spacetime-client/src/mapper.rs @@ -291,6 +291,8 @@ pub(crate) use self::runtime_profile::{ map_runtime_profile_invite_code_admin_procedure_result, map_runtime_profile_play_stats_procedure_result, map_runtime_profile_recharge_center_procedure_result, + map_runtime_profile_recharge_order_expiration_claim_procedure_result, + map_runtime_profile_recharge_order_expiration_complete_procedure_result, map_runtime_profile_recharge_order_procedure_result, map_runtime_profile_recharge_product_admin_list_procedure_result, map_runtime_profile_recharge_product_admin_procedure_result, diff --git a/server-rs/crates/spacetime-client/src/mapper/runtime_profile.rs b/server-rs/crates/spacetime-client/src/mapper/runtime_profile.rs index 8fbad4d71..0a032ebed 100644 --- a/server-rs/crates/spacetime-client/src/mapper/runtime_profile.rs +++ b/server-rs/crates/spacetime-client/src/mapper/runtime_profile.rs @@ -210,6 +210,40 @@ impl From } } +impl From + for RuntimeProfileRechargeOrderCloseInput +{ + fn from(input: module_runtime::RuntimeProfileRechargeOrderCloseInput) -> Self { + Self { + order_id: input.order_id, + closed_at_micros: input.closed_at_micros, + } + } +} + +impl From + for RuntimeProfileRechargeOrderExpirationClaimInput +{ + fn from(input: module_runtime::RuntimeProfileRechargeOrderExpirationClaimInput) -> Self { + Self { + worker_id: input.worker_id, + now_micros: input.now_micros, + lease_expires_at_micros: input.lease_expires_at_micros, + limit: input.limit, + } + } +} + +impl From + for RuntimeProfileRechargeOrderExpirationCompleteInput +{ + fn from(input: module_runtime::RuntimeProfileRechargeOrderExpirationCompleteInput) -> Self { + Self { + order_id: input.order_id, + } + } +} + impl From for RuntimeProfileRechargeProductAdminListInput { @@ -453,6 +487,33 @@ pub(crate) fn map_runtime_profile_recharge_order_procedure_result( )) } +pub(crate) fn map_runtime_profile_recharge_order_expiration_claim_procedure_result( + result: RuntimeProfileRechargeOrderExpirationClaimProcedureResult, +) -> Result< + Vec, + SpacetimeClientError, +> { + if !result.ok { + return Err(SpacetimeClientError::procedure_failed(result.error_message)); + } + + Ok(result + .entries + .into_iter() + .map(map_runtime_profile_recharge_order_expiration_schedule_snapshot) + .collect()) +} + +pub(crate) fn map_runtime_profile_recharge_order_expiration_complete_procedure_result( + result: RuntimeProfileRechargeOrderExpirationCompleteProcedureResult, +) -> Result<(), SpacetimeClientError> { + if !result.ok { + return Err(SpacetimeClientError::procedure_failed(result.error_message)); + } + + Ok(()) +} + pub(crate) fn map_runtime_profile_feedback_submission_procedure_result( result: RuntimeProfileFeedbackSubmissionProcedureResult, ) -> Result { @@ -967,6 +1028,20 @@ pub(crate) fn map_runtime_profile_recharge_order_snapshot( } } +pub(crate) fn map_runtime_profile_recharge_order_expiration_schedule_snapshot( + snapshot: RuntimeProfileRechargeOrderExpirationScheduleSnapshot, +) -> module_runtime::RuntimeProfileRechargeOrderExpirationScheduleSnapshot { + module_runtime::RuntimeProfileRechargeOrderExpirationScheduleSnapshot { + order_id: snapshot.order_id, + user_id: snapshot.user_id, + scheduled_at_micros: snapshot.scheduled_at_micros, + lease_owner: snapshot.lease_owner, + lease_expires_at_micros: snapshot.lease_expires_at_micros, + created_at_micros: snapshot.created_at_micros, + updated_at_micros: snapshot.updated_at_micros, + } +} + pub(crate) fn map_runtime_profile_feedback_submission_snapshot( snapshot: RuntimeProfileFeedbackSubmissionSnapshot, ) -> module_runtime::RuntimeProfileFeedbackSubmissionSnapshot { diff --git a/server-rs/crates/spacetime-client/src/module_bindings.rs b/server-rs/crates/spacetime-client/src/module_bindings.rs index 2b3821204..37ddd4a5e 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings.rs @@ -214,12 +214,14 @@ pub mod chapter_progression_table; pub mod chapter_progression_type; pub mod checkpoint_wooden_fish_run_procedure; pub mod claim_external_generation_jobs_and_return_procedure; +pub mod claim_profile_recharge_order_expiration_schedule_and_return_procedure; pub mod claim_profile_task_reward_and_return_procedure; pub mod claim_puzzle_background_compile_task_procedure; pub mod claim_puzzle_work_point_incentive_procedure; pub mod clear_database_migration_import_chunks_procedure; pub mod clear_platform_browse_history_and_return_procedure; pub mod click_match_3_d_item_procedure; +pub mod close_profile_recharge_order_and_return_procedure; pub mod combat_outcome_type; pub mod compile_big_fish_draft_procedure; pub mod compile_custom_world_published_profile_procedure; @@ -233,6 +235,7 @@ pub mod compile_wooden_fish_draft_procedure; pub mod complete_ai_stage_and_return_procedure; pub mod complete_ai_task_and_return_procedure; pub mod complete_external_generation_job_and_return_procedure; +pub mod complete_profile_recharge_order_expiration_schedule_and_return_procedure; pub mod confirm_asset_object_and_return_procedure; pub mod confirm_asset_object_reducer; pub mod consume_inventory_item_input_type; @@ -714,6 +717,8 @@ pub mod profile_membership_table; pub mod profile_membership_type; pub mod profile_played_world_table; pub mod profile_played_world_type; +pub mod profile_recharge_order_expiration_schedule_table; +pub mod profile_recharge_order_expiration_schedule_type; pub mod profile_recharge_order_table; pub mod profile_recharge_order_type; pub mod profile_recharge_product_config_table; @@ -997,7 +1002,13 @@ pub mod runtime_profile_played_world_snapshot_type; pub mod runtime_profile_recharge_center_get_input_type; pub mod runtime_profile_recharge_center_procedure_result_type; pub mod runtime_profile_recharge_center_snapshot_type; +pub mod runtime_profile_recharge_order_close_input_type; pub mod runtime_profile_recharge_order_create_input_type; +pub mod runtime_profile_recharge_order_expiration_claim_input_type; +pub mod runtime_profile_recharge_order_expiration_claim_procedure_result_type; +pub mod runtime_profile_recharge_order_expiration_complete_input_type; +pub mod runtime_profile_recharge_order_expiration_complete_procedure_result_type; +pub mod runtime_profile_recharge_order_expiration_schedule_snapshot_type; pub mod runtime_profile_recharge_order_get_input_type; pub mod runtime_profile_recharge_order_paid_input_type; pub mod runtime_profile_recharge_order_snapshot_type; @@ -1500,12 +1511,14 @@ pub use chapter_progression_table::*; pub use chapter_progression_type::ChapterProgression; pub use checkpoint_wooden_fish_run_procedure::checkpoint_wooden_fish_run; pub use claim_external_generation_jobs_and_return_procedure::claim_external_generation_jobs_and_return; +pub use claim_profile_recharge_order_expiration_schedule_and_return_procedure::claim_profile_recharge_order_expiration_schedule_and_return; pub use claim_profile_task_reward_and_return_procedure::claim_profile_task_reward_and_return; pub use claim_puzzle_background_compile_task_procedure::claim_puzzle_background_compile_task; pub use claim_puzzle_work_point_incentive_procedure::claim_puzzle_work_point_incentive; pub use clear_database_migration_import_chunks_procedure::clear_database_migration_import_chunks; pub use clear_platform_browse_history_and_return_procedure::clear_platform_browse_history_and_return; pub use click_match_3_d_item_procedure::click_match_3_d_item; +pub use close_profile_recharge_order_and_return_procedure::close_profile_recharge_order_and_return; pub use combat_outcome_type::CombatOutcome; pub use compile_big_fish_draft_procedure::compile_big_fish_draft; pub use compile_custom_world_published_profile_procedure::compile_custom_world_published_profile; @@ -1519,6 +1532,7 @@ pub use compile_wooden_fish_draft_procedure::compile_wooden_fish_draft; pub use complete_ai_stage_and_return_procedure::complete_ai_stage_and_return; pub use complete_ai_task_and_return_procedure::complete_ai_task_and_return; pub use complete_external_generation_job_and_return_procedure::complete_external_generation_job_and_return; +pub use complete_profile_recharge_order_expiration_schedule_and_return_procedure::complete_profile_recharge_order_expiration_schedule_and_return; pub use confirm_asset_object_and_return_procedure::confirm_asset_object_and_return; pub use confirm_asset_object_reducer::confirm_asset_object; pub use consume_inventory_item_input_type::ConsumeInventoryItemInput; @@ -2000,6 +2014,8 @@ pub use profile_membership_table::*; pub use profile_membership_type::ProfileMembership; pub use profile_played_world_table::*; pub use profile_played_world_type::ProfilePlayedWorld; +pub use profile_recharge_order_expiration_schedule_table::*; +pub use profile_recharge_order_expiration_schedule_type::ProfileRechargeOrderExpirationSchedule; pub use profile_recharge_order_table::*; pub use profile_recharge_order_type::ProfileRechargeOrder; pub use profile_recharge_product_config_table::*; @@ -2283,7 +2299,13 @@ pub use runtime_profile_played_world_snapshot_type::RuntimeProfilePlayedWorldSna pub use runtime_profile_recharge_center_get_input_type::RuntimeProfileRechargeCenterGetInput; pub use runtime_profile_recharge_center_procedure_result_type::RuntimeProfileRechargeCenterProcedureResult; pub use runtime_profile_recharge_center_snapshot_type::RuntimeProfileRechargeCenterSnapshot; +pub use runtime_profile_recharge_order_close_input_type::RuntimeProfileRechargeOrderCloseInput; pub use runtime_profile_recharge_order_create_input_type::RuntimeProfileRechargeOrderCreateInput; +pub use runtime_profile_recharge_order_expiration_claim_input_type::RuntimeProfileRechargeOrderExpirationClaimInput; +pub use runtime_profile_recharge_order_expiration_claim_procedure_result_type::RuntimeProfileRechargeOrderExpirationClaimProcedureResult; +pub use runtime_profile_recharge_order_expiration_complete_input_type::RuntimeProfileRechargeOrderExpirationCompleteInput; +pub use runtime_profile_recharge_order_expiration_complete_procedure_result_type::RuntimeProfileRechargeOrderExpirationCompleteProcedureResult; +pub use runtime_profile_recharge_order_expiration_schedule_snapshot_type::RuntimeProfileRechargeOrderExpirationScheduleSnapshot; pub use runtime_profile_recharge_order_get_input_type::RuntimeProfileRechargeOrderGetInput; pub use runtime_profile_recharge_order_paid_input_type::RuntimeProfileRechargeOrderPaidInput; pub use runtime_profile_recharge_order_snapshot_type::RuntimeProfileRechargeOrderSnapshot; @@ -2923,6 +2945,8 @@ pub struct DbUpdate { profile_membership: __sdk::TableUpdate, profile_played_world: __sdk::TableUpdate, profile_recharge_order: __sdk::TableUpdate, + profile_recharge_order_expiration_schedule: + __sdk::TableUpdate, profile_recharge_product_config: __sdk::TableUpdate, profile_redeem_code: __sdk::TableUpdate, profile_redeem_code_usage: __sdk::TableUpdate, @@ -3219,6 +3243,13 @@ impl TryFrom<__ws::v2::TransactionUpdate> for DbUpdate { "profile_recharge_order" => db_update.profile_recharge_order.append( profile_recharge_order_table::parse_table_update(table_update)?, ), + "profile_recharge_order_expiration_schedule" => { + db_update.profile_recharge_order_expiration_schedule.append( + profile_recharge_order_expiration_schedule_table::parse_table_update( + table_update, + )?, + ) + } "profile_recharge_product_config" => { db_update.profile_recharge_product_config.append( profile_recharge_product_config_table::parse_table_update(table_update)?, @@ -3784,6 +3815,12 @@ impl __sdk::DbUpdate for DbUpdate { &self.profile_recharge_order, ) .with_updates_by_pk(|row| &row.order_id); + diff.profile_recharge_order_expiration_schedule = cache + .apply_diff_to_table::( + "profile_recharge_order_expiration_schedule", + &self.profile_recharge_order_expiration_schedule, + ) + .with_updates_by_pk(|row| &row.order_id); diff.profile_recharge_product_config = cache .apply_diff_to_table::( "profile_recharge_product_config", @@ -4320,6 +4357,9 @@ impl __sdk::DbUpdate for DbUpdate { "profile_recharge_order" => db_update .profile_recharge_order .append(__sdk::parse_row_list_as_inserts(table_rows.rows)?), + "profile_recharge_order_expiration_schedule" => db_update + .profile_recharge_order_expiration_schedule + .append(__sdk::parse_row_list_as_inserts(table_rows.rows)?), "profile_recharge_product_config" => db_update .profile_recharge_product_config .append(__sdk::parse_row_list_as_inserts(table_rows.rows)?), @@ -4729,6 +4769,9 @@ impl __sdk::DbUpdate for DbUpdate { "profile_recharge_order" => db_update .profile_recharge_order .append(__sdk::parse_row_list_as_deletes(table_rows.rows)?), + "profile_recharge_order_expiration_schedule" => db_update + .profile_recharge_order_expiration_schedule + .append(__sdk::parse_row_list_as_deletes(table_rows.rows)?), "profile_recharge_product_config" => db_update .profile_recharge_product_config .append(__sdk::parse_row_list_as_deletes(table_rows.rows)?), @@ -4996,6 +5039,8 @@ pub struct AppliedDiff<'r> { profile_membership: __sdk::TableAppliedDiff<'r, ProfileMembership>, profile_played_world: __sdk::TableAppliedDiff<'r, ProfilePlayedWorld>, profile_recharge_order: __sdk::TableAppliedDiff<'r, ProfileRechargeOrder>, + profile_recharge_order_expiration_schedule: + __sdk::TableAppliedDiff<'r, ProfileRechargeOrderExpirationSchedule>, profile_recharge_product_config: __sdk::TableAppliedDiff<'r, ProfileRechargeProductConfig>, profile_redeem_code: __sdk::TableAppliedDiff<'r, ProfileRedeemCode>, profile_redeem_code_usage: __sdk::TableAppliedDiff<'r, ProfileRedeemCodeUsage>, @@ -5422,6 +5467,11 @@ impl<'r> __sdk::AppliedDiff<'r> for AppliedDiff<'r> { &self.profile_recharge_order, event, ); + callbacks.invoke_table_row_callbacks::( + "profile_recharge_order_expiration_schedule", + &self.profile_recharge_order_expiration_schedule, + event, + ); callbacks.invoke_table_row_callbacks::( "profile_recharge_product_config", &self.profile_recharge_product_config, @@ -5964,19 +6014,19 @@ impl __sdk::SubscriptionHandle for SubscriptionHandle { /// either a [`DbConnection`] or an [`EventContext`] and operate on either. pub trait RemoteDbContext: __sdk::DbContext< - DbView = RemoteTables, - Reducers = RemoteReducers, - SubscriptionBuilder = __sdk::SubscriptionBuilder, -> + DbView = RemoteTables, + Reducers = RemoteReducers, + SubscriptionBuilder = __sdk::SubscriptionBuilder, + > { } impl< - Ctx: __sdk::DbContext< + Ctx: __sdk::DbContext< DbView = RemoteTables, Reducers = RemoteReducers, SubscriptionBuilder = __sdk::SubscriptionBuilder, >, - > RemoteDbContext for Ctx +> RemoteDbContext for Ctx { } @@ -6442,6 +6492,7 @@ impl __sdk::SpacetimeModule for RemoteModule { profile_membership_table::register_table(client_cache); profile_played_world_table::register_table(client_cache); profile_recharge_order_table::register_table(client_cache); + profile_recharge_order_expiration_schedule_table::register_table(client_cache); profile_recharge_product_config_table::register_table(client_cache); profile_redeem_code_table::register_table(client_cache); profile_redeem_code_usage_table::register_table(client_cache); @@ -6576,6 +6627,7 @@ impl __sdk::SpacetimeModule for RemoteModule { "profile_membership", "profile_played_world", "profile_recharge_order", + "profile_recharge_order_expiration_schedule", "profile_recharge_product_config", "profile_redeem_code", "profile_redeem_code_usage", diff --git a/server-rs/crates/spacetime-client/src/module_bindings/accept_quest_reducer.rs b/server-rs/crates/spacetime-client/src/module_bindings/accept_quest_reducer.rs index dfebf9039..61e6b9c53 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/accept_quest_reducer.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/accept_quest_reducer.rs @@ -47,9 +47,11 @@ pub trait accept_quest { &self, input: QuestRecordInput, - callback: impl FnOnce(&super::ReducerEventContext, Result, __sdk::InternalError>) - + Send - + 'static, + callback: impl FnOnce( + &super::ReducerEventContext, + Result, __sdk::InternalError>, + ) + Send + + 'static, ) -> __sdk::Result<()>; } @@ -58,9 +60,11 @@ impl accept_quest for super::RemoteReducers { &self, input: QuestRecordInput, - callback: impl FnOnce(&super::ReducerEventContext, Result, __sdk::InternalError>) - + Send - + 'static, + callback: impl FnOnce( + &super::ReducerEventContext, + Result, __sdk::InternalError>, + ) + Send + + 'static, ) -> __sdk::Result<()> { self.imp .invoke_reducer_with_callback(AcceptQuestArgs { input }, callback) diff --git a/server-rs/crates/spacetime-client/src/module_bindings/acknowledge_external_generation_jobs_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/acknowledge_external_generation_jobs_and_return_procedure.rs index e9b1c18fe..4c83af9ca 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/acknowledge_external_generation_jobs_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/acknowledge_external_generation_jobs_and_return_procedure.rs @@ -34,10 +34,10 @@ pub trait acknowledge_external_generation_jobs_and_return { input: ExternalGenerationJobAcknowledgeInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -47,10 +47,10 @@ impl acknowledge_external_generation_jobs_and_return for super::RemoteProcedures input: ExternalGenerationJobAcknowledgeInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, ExternalGenerationJobProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/acknowledge_quest_completion_reducer.rs b/server-rs/crates/spacetime-client/src/module_bindings/acknowledge_quest_completion_reducer.rs index 6ae2fd100..b1419fb7e 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/acknowledge_quest_completion_reducer.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/acknowledge_quest_completion_reducer.rs @@ -47,9 +47,11 @@ pub trait acknowledge_quest_completion { &self, input: QuestCompletionAckInput, - callback: impl FnOnce(&super::ReducerEventContext, Result, __sdk::InternalError>) - + Send - + 'static, + callback: impl FnOnce( + &super::ReducerEventContext, + Result, __sdk::InternalError>, + ) + Send + + 'static, ) -> __sdk::Result<()>; } @@ -58,9 +60,11 @@ impl acknowledge_quest_completion for super::RemoteReducers { &self, input: QuestCompletionAckInput, - callback: impl FnOnce(&super::ReducerEventContext, Result, __sdk::InternalError>) - + Send - + 'static, + callback: impl FnOnce( + &super::ReducerEventContext, + Result, __sdk::InternalError>, + ) + Send + + 'static, ) -> __sdk::Result<()> { self.imp .invoke_reducer_with_callback(AcknowledgeQuestCompletionArgs { input }, callback) diff --git a/server-rs/crates/spacetime-client/src/module_bindings/admin_disable_profile_redeem_code_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/admin_disable_profile_redeem_code_procedure.rs index bbdaab4f3..9865ace59 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/admin_disable_profile_redeem_code_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/admin_disable_profile_redeem_code_procedure.rs @@ -31,10 +31,10 @@ pub trait admin_disable_profile_redeem_code { input: RuntimeProfileRedeemCodeAdminDisableInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl admin_disable_profile_redeem_code for super::RemoteProcedures { input: RuntimeProfileRedeemCodeAdminDisableInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, RuntimeProfileRedeemCodeAdminProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/admin_disable_profile_task_config_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/admin_disable_profile_task_config_procedure.rs index c968f950d..0417bd2e9 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/admin_disable_profile_task_config_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/admin_disable_profile_task_config_procedure.rs @@ -31,10 +31,10 @@ pub trait admin_disable_profile_task_config { input: RuntimeProfileTaskConfigAdminDisableInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl admin_disable_profile_task_config for super::RemoteProcedures { input: RuntimeProfileTaskConfigAdminDisableInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, RuntimeProfileTaskConfigAdminProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/admin_get_profile_wallet_config_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/admin_get_profile_wallet_config_procedure.rs index c7c836f1b..1f48e0770 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/admin_get_profile_wallet_config_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/admin_get_profile_wallet_config_procedure.rs @@ -31,10 +31,10 @@ pub trait admin_get_profile_wallet_config { input: RuntimeProfileWalletConfigAdminGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl admin_get_profile_wallet_config for super::RemoteProcedures { input: RuntimeProfileWalletConfigAdminGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, RuntimeProfileWalletConfigAdminProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/admin_list_editor_assets_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/admin_list_editor_assets_and_return_procedure.rs index cc3c8ecd6..8e3589adb 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/admin_list_editor_assets_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/admin_list_editor_assets_and_return_procedure.rs @@ -31,10 +31,10 @@ pub trait admin_list_editor_assets_and_return { input: AdminEditorAssetListInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl admin_list_editor_assets_and_return for super::RemoteProcedures { input: AdminEditorAssetListInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, AdminEditorAssetListProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/admin_list_editor_showcase_assets_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/admin_list_editor_showcase_assets_and_return_procedure.rs index 69ce4beca..a740930a7 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/admin_list_editor_showcase_assets_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/admin_list_editor_showcase_assets_and_return_procedure.rs @@ -34,10 +34,10 @@ pub trait admin_list_editor_showcase_assets_and_return { input: EditorShowcaseAssetAdminListInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -47,10 +47,10 @@ impl admin_list_editor_showcase_assets_and_return for super::RemoteProcedures { input: EditorShowcaseAssetAdminListInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, EditorShowcaseAssetListProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/admin_list_profile_invite_codes_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/admin_list_profile_invite_codes_procedure.rs index cdfa27d91..96d2350f5 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/admin_list_profile_invite_codes_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/admin_list_profile_invite_codes_procedure.rs @@ -31,10 +31,10 @@ pub trait admin_list_profile_invite_codes { input: RuntimeProfileInviteCodeAdminListInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl admin_list_profile_invite_codes for super::RemoteProcedures { input: RuntimeProfileInviteCodeAdminListInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, RuntimeProfileInviteCodeAdminListProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/admin_list_profile_recharge_products_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/admin_list_profile_recharge_products_procedure.rs index e84d4ec62..a1deed886 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/admin_list_profile_recharge_products_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/admin_list_profile_recharge_products_procedure.rs @@ -34,10 +34,10 @@ pub trait admin_list_profile_recharge_products { input: RuntimeProfileRechargeProductAdminListInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -47,10 +47,10 @@ impl admin_list_profile_recharge_products for super::RemoteProcedures { input: RuntimeProfileRechargeProductAdminListInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp.invoke_procedure_with_callback::<_, RuntimeProfileRechargeProductAdminListProcedureResult>( "admin_list_profile_recharge_products", diff --git a/server-rs/crates/spacetime-client/src/module_bindings/admin_list_profile_redeem_codes_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/admin_list_profile_redeem_codes_procedure.rs index 2c9b9dd73..c7d6a78e8 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/admin_list_profile_redeem_codes_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/admin_list_profile_redeem_codes_procedure.rs @@ -31,10 +31,10 @@ pub trait admin_list_profile_redeem_codes { input: RuntimeProfileRedeemCodeAdminListInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl admin_list_profile_redeem_codes for super::RemoteProcedures { input: RuntimeProfileRedeemCodeAdminListInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, RuntimeProfileRedeemCodeAdminListProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/admin_list_profile_task_configs_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/admin_list_profile_task_configs_procedure.rs index 88ca28d55..a152116df 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/admin_list_profile_task_configs_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/admin_list_profile_task_configs_procedure.rs @@ -31,10 +31,10 @@ pub trait admin_list_profile_task_configs { input: RuntimeProfileTaskConfigAdminListInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl admin_list_profile_task_configs for super::RemoteProcedures { input: RuntimeProfileTaskConfigAdminListInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, RuntimeProfileTaskConfigAdminListProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/admin_list_work_visibility_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/admin_list_work_visibility_procedure.rs index 72028b5e5..df222e415 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/admin_list_work_visibility_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/admin_list_work_visibility_procedure.rs @@ -31,10 +31,10 @@ pub trait admin_list_work_visibility { input: AdminWorkVisibilityListInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl admin_list_work_visibility for super::RemoteProcedures { input: AdminWorkVisibilityListInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, AdminWorkVisibilityListProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/admin_review_editor_showcase_asset_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/admin_review_editor_showcase_asset_and_return_procedure.rs index 29b2ecf60..71334fc07 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/admin_review_editor_showcase_asset_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/admin_review_editor_showcase_asset_and_return_procedure.rs @@ -34,10 +34,10 @@ pub trait admin_review_editor_showcase_asset_and_return { input: EditorShowcaseAssetAdminReviewInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -47,10 +47,10 @@ impl admin_review_editor_showcase_asset_and_return for super::RemoteProcedures { input: EditorShowcaseAssetAdminReviewInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, EditorShowcaseAssetProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/admin_update_work_visibility_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/admin_update_work_visibility_procedure.rs index bbc85a892..4a88c0841 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/admin_update_work_visibility_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/admin_update_work_visibility_procedure.rs @@ -31,10 +31,10 @@ pub trait admin_update_work_visibility { input: AdminWorkVisibilityUpdateInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl admin_update_work_visibility for super::RemoteProcedures { input: AdminWorkVisibilityUpdateInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, AdminWorkVisibilityProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/admin_upsert_profile_invite_code_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/admin_upsert_profile_invite_code_procedure.rs index 3601be97f..2411092d2 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/admin_upsert_profile_invite_code_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/admin_upsert_profile_invite_code_procedure.rs @@ -31,10 +31,10 @@ pub trait admin_upsert_profile_invite_code { input: RuntimeProfileInviteCodeAdminUpsertInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl admin_upsert_profile_invite_code for super::RemoteProcedures { input: RuntimeProfileInviteCodeAdminUpsertInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, RuntimeProfileInviteCodeAdminProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/admin_upsert_profile_recharge_product_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/admin_upsert_profile_recharge_product_procedure.rs index e3f42278b..83941b836 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/admin_upsert_profile_recharge_product_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/admin_upsert_profile_recharge_product_procedure.rs @@ -34,10 +34,10 @@ pub trait admin_upsert_profile_recharge_product { input: RuntimeProfileRechargeProductAdminUpsertInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -47,10 +47,10 @@ impl admin_upsert_profile_recharge_product for super::RemoteProcedures { input: RuntimeProfileRechargeProductAdminUpsertInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, RuntimeProfileRechargeProductAdminProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/admin_upsert_profile_redeem_code_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/admin_upsert_profile_redeem_code_procedure.rs index 7e918220f..9c7ae92f1 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/admin_upsert_profile_redeem_code_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/admin_upsert_profile_redeem_code_procedure.rs @@ -31,10 +31,10 @@ pub trait admin_upsert_profile_redeem_code { input: RuntimeProfileRedeemCodeAdminUpsertInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl admin_upsert_profile_redeem_code for super::RemoteProcedures { input: RuntimeProfileRedeemCodeAdminUpsertInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, RuntimeProfileRedeemCodeAdminProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/admin_upsert_profile_task_config_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/admin_upsert_profile_task_config_procedure.rs index a3d3e11a4..b441a8084 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/admin_upsert_profile_task_config_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/admin_upsert_profile_task_config_procedure.rs @@ -31,10 +31,10 @@ pub trait admin_upsert_profile_task_config { input: RuntimeProfileTaskConfigAdminUpsertInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl admin_upsert_profile_task_config for super::RemoteProcedures { input: RuntimeProfileTaskConfigAdminUpsertInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, RuntimeProfileTaskConfigAdminProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/admin_upsert_profile_wallet_config_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/admin_upsert_profile_wallet_config_procedure.rs index b87b6506d..46814d669 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/admin_upsert_profile_wallet_config_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/admin_upsert_profile_wallet_config_procedure.rs @@ -34,10 +34,10 @@ pub trait admin_upsert_profile_wallet_config { input: RuntimeProfileWalletConfigAdminUpsertInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -47,10 +47,10 @@ impl admin_upsert_profile_wallet_config for super::RemoteProcedures { input: RuntimeProfileWalletConfigAdminUpsertInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, RuntimeProfileWalletConfigAdminProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/advance_puzzle_clear_next_level_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/advance_puzzle_clear_next_level_procedure.rs index 7ed1e4bc9..a75b35e46 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/advance_puzzle_clear_next_level_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/advance_puzzle_clear_next_level_procedure.rs @@ -31,10 +31,10 @@ pub trait advance_puzzle_clear_next_level { input: PuzzleClearRunNextLevelInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl advance_puzzle_clear_next_level for super::RemoteProcedures { input: PuzzleClearRunNextLevelInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, PuzzleClearRunProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/advance_puzzle_next_level_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/advance_puzzle_next_level_procedure.rs index 6d3e9f791..7cb4f8f4d 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/advance_puzzle_next_level_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/advance_puzzle_next_level_procedure.rs @@ -31,10 +31,10 @@ pub trait advance_puzzle_next_level { input: PuzzleRunNextLevelInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl advance_puzzle_next_level for super::RemoteProcedures { input: PuzzleRunNextLevelInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, PuzzleRunProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/append_ai_text_chunk_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/append_ai_text_chunk_and_return_procedure.rs index 11323392d..191e2ea7c 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/append_ai_text_chunk_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/append_ai_text_chunk_and_return_procedure.rs @@ -31,10 +31,10 @@ pub trait append_ai_text_chunk_and_return { input: AiTextChunkAppendInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl append_ai_text_chunk_and_return for super::RemoteProcedures { input: AiTextChunkAppendInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, AiTaskProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/append_visual_novel_runtime_history_entry_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/append_visual_novel_runtime_history_entry_procedure.rs index 4686ba5ca..ad1099d0f 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/append_visual_novel_runtime_history_entry_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/append_visual_novel_runtime_history_entry_procedure.rs @@ -34,10 +34,10 @@ pub trait append_visual_novel_runtime_history_entry { input: VisualNovelRuntimeHistoryAppendInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -47,10 +47,10 @@ impl append_visual_novel_runtime_history_entry for super::RemoteProcedures { input: VisualNovelRuntimeHistoryAppendInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, VisualNovelHistoryProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/apply_chapter_progression_ledger_entry_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/apply_chapter_progression_ledger_entry_and_return_procedure.rs index bba4c841b..4a9499061 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/apply_chapter_progression_ledger_entry_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/apply_chapter_progression_ledger_entry_and_return_procedure.rs @@ -34,10 +34,10 @@ pub trait apply_chapter_progression_ledger_entry_and_return { input: ChapterProgressionLedgerInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -47,10 +47,10 @@ impl apply_chapter_progression_ledger_entry_and_return for super::RemoteProcedur input: ChapterProgressionLedgerInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, ChapterProgressionProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/apply_chapter_progression_ledger_entry_reducer.rs b/server-rs/crates/spacetime-client/src/module_bindings/apply_chapter_progression_ledger_entry_reducer.rs index 98f821ef9..44596083b 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/apply_chapter_progression_ledger_entry_reducer.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/apply_chapter_progression_ledger_entry_reducer.rs @@ -50,9 +50,11 @@ pub trait apply_chapter_progression_ledger_entry { &self, input: ChapterProgressionLedgerInput, - callback: impl FnOnce(&super::ReducerEventContext, Result, __sdk::InternalError>) - + Send - + 'static, + callback: impl FnOnce( + &super::ReducerEventContext, + Result, __sdk::InternalError>, + ) + Send + + 'static, ) -> __sdk::Result<()>; } @@ -61,9 +63,11 @@ impl apply_chapter_progression_ledger_entry for super::RemoteReducers { &self, input: ChapterProgressionLedgerInput, - callback: impl FnOnce(&super::ReducerEventContext, Result, __sdk::InternalError>) - + Send - + 'static, + callback: impl FnOnce( + &super::ReducerEventContext, + Result, __sdk::InternalError>, + ) + Send + + 'static, ) -> __sdk::Result<()> { self.imp.invoke_reducer_with_callback( ApplyChapterProgressionLedgerEntryArgs { input }, diff --git a/server-rs/crates/spacetime-client/src/module_bindings/apply_inventory_mutation_reducer.rs b/server-rs/crates/spacetime-client/src/module_bindings/apply_inventory_mutation_reducer.rs index 91f7d2c06..d9b4240d8 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/apply_inventory_mutation_reducer.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/apply_inventory_mutation_reducer.rs @@ -47,9 +47,11 @@ pub trait apply_inventory_mutation { &self, input: InventoryMutationInput, - callback: impl FnOnce(&super::ReducerEventContext, Result, __sdk::InternalError>) - + Send - + 'static, + callback: impl FnOnce( + &super::ReducerEventContext, + Result, __sdk::InternalError>, + ) + Send + + 'static, ) -> __sdk::Result<()>; } @@ -58,9 +60,11 @@ impl apply_inventory_mutation for super::RemoteReducers { &self, input: InventoryMutationInput, - callback: impl FnOnce(&super::ReducerEventContext, Result, __sdk::InternalError>) - + Send - + 'static, + callback: impl FnOnce( + &super::ReducerEventContext, + Result, __sdk::InternalError>, + ) + Send + + 'static, ) -> __sdk::Result<()> { self.imp .invoke_reducer_with_callback(ApplyInventoryMutationArgs { input }, callback) diff --git a/server-rs/crates/spacetime-client/src/module_bindings/apply_quest_signal_reducer.rs b/server-rs/crates/spacetime-client/src/module_bindings/apply_quest_signal_reducer.rs index afb452b55..6b4c310ba 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/apply_quest_signal_reducer.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/apply_quest_signal_reducer.rs @@ -47,9 +47,11 @@ pub trait apply_quest_signal { &self, input: QuestSignalApplyInput, - callback: impl FnOnce(&super::ReducerEventContext, Result, __sdk::InternalError>) - + Send - + 'static, + callback: impl FnOnce( + &super::ReducerEventContext, + Result, __sdk::InternalError>, + ) + Send + + 'static, ) -> __sdk::Result<()>; } @@ -58,9 +60,11 @@ impl apply_quest_signal for super::RemoteReducers { &self, input: QuestSignalApplyInput, - callback: impl FnOnce(&super::ReducerEventContext, Result, __sdk::InternalError>) - + Send - + 'static, + callback: impl FnOnce( + &super::ReducerEventContext, + Result, __sdk::InternalError>, + ) + Send + + 'static, ) -> __sdk::Result<()> { self.imp .invoke_reducer_with_callback(ApplyQuestSignalArgs { input }, callback) diff --git a/server-rs/crates/spacetime-client/src/module_bindings/attach_ai_result_reference_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/attach_ai_result_reference_and_return_procedure.rs index 2f3edbe2a..94d418502 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/attach_ai_result_reference_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/attach_ai_result_reference_and_return_procedure.rs @@ -31,10 +31,10 @@ pub trait attach_ai_result_reference_and_return { input: AiResultReferenceInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl attach_ai_result_reference_and_return for super::RemoteProcedures { input: AiResultReferenceInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, AiTaskProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/authenticate_external_api_key_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/authenticate_external_api_key_and_return_procedure.rs index 4c3aec34c..279534f41 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/authenticate_external_api_key_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/authenticate_external_api_key_and_return_procedure.rs @@ -31,10 +31,10 @@ pub trait authenticate_external_api_key_and_return { input: ExternalApiKeyAuthenticateInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl authenticate_external_api_key_and_return for super::RemoteProcedures { input: ExternalApiKeyAuthenticateInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, ExternalApiKeyProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/authorize_database_migration_operator_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/authorize_database_migration_operator_procedure.rs index b58850228..ac77f7e80 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/authorize_database_migration_operator_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/authorize_database_migration_operator_procedure.rs @@ -34,10 +34,10 @@ pub trait authorize_database_migration_operator { input: DatabaseMigrationAuthorizeOperatorInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -47,10 +47,10 @@ impl authorize_database_migration_operator for super::RemoteProcedures { input: DatabaseMigrationAuthorizeOperatorInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, DatabaseMigrationOperatorProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/begin_story_session_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/begin_story_session_and_return_procedure.rs index eef3de0f7..304b2e0c2 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/begin_story_session_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/begin_story_session_and_return_procedure.rs @@ -31,10 +31,10 @@ pub trait begin_story_session_and_return { input: StorySessionInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl begin_story_session_and_return for super::RemoteProcedures { input: StorySessionInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, StorySessionProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/begin_story_session_reducer.rs b/server-rs/crates/spacetime-client/src/module_bindings/begin_story_session_reducer.rs index 6a082f419..22bc4add7 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/begin_story_session_reducer.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/begin_story_session_reducer.rs @@ -47,9 +47,11 @@ pub trait begin_story_session { &self, input: StorySessionInput, - callback: impl FnOnce(&super::ReducerEventContext, Result, __sdk::InternalError>) - + Send - + 'static, + callback: impl FnOnce( + &super::ReducerEventContext, + Result, __sdk::InternalError>, + ) + Send + + 'static, ) -> __sdk::Result<()>; } @@ -58,9 +60,11 @@ impl begin_story_session for super::RemoteReducers { &self, input: StorySessionInput, - callback: impl FnOnce(&super::ReducerEventContext, Result, __sdk::InternalError>) - + Send - + 'static, + callback: impl FnOnce( + &super::ReducerEventContext, + Result, __sdk::InternalError>, + ) + Send + + 'static, ) -> __sdk::Result<()> { self.imp .invoke_reducer_with_callback(BeginStorySessionArgs { input }, callback) diff --git a/server-rs/crates/spacetime-client/src/module_bindings/bind_asset_object_to_entity_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/bind_asset_object_to_entity_and_return_procedure.rs index b709d5c2f..78c80aee5 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/bind_asset_object_to_entity_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/bind_asset_object_to_entity_and_return_procedure.rs @@ -31,10 +31,10 @@ pub trait bind_asset_object_to_entity_and_return { input: AssetEntityBindingInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl bind_asset_object_to_entity_and_return for super::RemoteProcedures { input: AssetEntityBindingInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, AssetEntityBindingProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/bind_asset_object_to_entity_reducer.rs b/server-rs/crates/spacetime-client/src/module_bindings/bind_asset_object_to_entity_reducer.rs index b20bc5b23..caf48b269 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/bind_asset_object_to_entity_reducer.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/bind_asset_object_to_entity_reducer.rs @@ -47,9 +47,11 @@ pub trait bind_asset_object_to_entity { &self, input: AssetEntityBindingInput, - callback: impl FnOnce(&super::ReducerEventContext, Result, __sdk::InternalError>) - + Send - + 'static, + callback: impl FnOnce( + &super::ReducerEventContext, + Result, __sdk::InternalError>, + ) + Send + + 'static, ) -> __sdk::Result<()>; } @@ -58,9 +60,11 @@ impl bind_asset_object_to_entity for super::RemoteReducers { &self, input: AssetEntityBindingInput, - callback: impl FnOnce(&super::ReducerEventContext, Result, __sdk::InternalError>) - + Send - + 'static, + callback: impl FnOnce( + &super::ReducerEventContext, + Result, __sdk::InternalError>, + ) + Send + + 'static, ) -> __sdk::Result<()> { self.imp .invoke_reducer_with_callback(BindAssetObjectToEntityArgs { input }, callback) diff --git a/server-rs/crates/spacetime-client/src/module_bindings/cancel_ai_task_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/cancel_ai_task_and_return_procedure.rs index b239e0600..0c5dc3eb4 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/cancel_ai_task_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/cancel_ai_task_and_return_procedure.rs @@ -31,10 +31,10 @@ pub trait cancel_ai_task_and_return { input: AiTaskCancelInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl cancel_ai_task_and_return for super::RemoteProcedures { input: AiTaskCancelInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, AiTaskProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/checkpoint_wooden_fish_run_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/checkpoint_wooden_fish_run_procedure.rs index 51aa864f5..5bd5a45c7 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/checkpoint_wooden_fish_run_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/checkpoint_wooden_fish_run_procedure.rs @@ -31,10 +31,10 @@ pub trait checkpoint_wooden_fish_run { input: WoodenFishRunCheckpointInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl checkpoint_wooden_fish_run for super::RemoteProcedures { input: WoodenFishRunCheckpointInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, WoodenFishRunProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/claim_external_generation_jobs_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/claim_external_generation_jobs_and_return_procedure.rs index 6455c7b2e..979ea56cc 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/claim_external_generation_jobs_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/claim_external_generation_jobs_and_return_procedure.rs @@ -31,10 +31,10 @@ pub trait claim_external_generation_jobs_and_return { input: ExternalGenerationJobClaimInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl claim_external_generation_jobs_and_return for super::RemoteProcedures { input: ExternalGenerationJobClaimInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, ExternalGenerationJobProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/claim_profile_recharge_order_expiration_schedule_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/claim_profile_recharge_order_expiration_schedule_and_return_procedure.rs new file mode 100644 index 000000000..93d75e737 --- /dev/null +++ b/server-rs/crates/spacetime-client/src/module_bindings/claim_profile_recharge_order_expiration_schedule_and_return_procedure.rs @@ -0,0 +1,61 @@ +// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE +// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD. + +#![allow(unused, clippy::all)] +use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws}; + +use super::runtime_profile_recharge_order_expiration_claim_input_type::RuntimeProfileRechargeOrderExpirationClaimInput; +use super::runtime_profile_recharge_order_expiration_claim_procedure_result_type::RuntimeProfileRechargeOrderExpirationClaimProcedureResult; + +#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)] +#[sats(crate = __lib)] +struct ClaimProfileRechargeOrderExpirationScheduleAndReturnArgs { + pub input: RuntimeProfileRechargeOrderExpirationClaimInput, +} + +impl __sdk::InModule for ClaimProfileRechargeOrderExpirationScheduleAndReturnArgs { + type Module = super::RemoteModule; +} + +#[allow(non_camel_case_types)] +/// Extension trait for access to the procedure `claim_profile_recharge_order_expiration_schedule_and_return`. +/// +/// Implemented for [`super::RemoteProcedures`]. +pub trait claim_profile_recharge_order_expiration_schedule_and_return { + fn claim_profile_recharge_order_expiration_schedule_and_return( + &self, + input: RuntimeProfileRechargeOrderExpirationClaimInput, + ) { + self.claim_profile_recharge_order_expiration_schedule_and_return_then(input, |_, _| {}); + } + + fn claim_profile_recharge_order_expiration_schedule_and_return_then( + &self, + input: RuntimeProfileRechargeOrderExpirationClaimInput, + + __callback: impl FnOnce( + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, + ); +} + +impl claim_profile_recharge_order_expiration_schedule_and_return for super::RemoteProcedures { + fn claim_profile_recharge_order_expiration_schedule_and_return_then( + &self, + input: RuntimeProfileRechargeOrderExpirationClaimInput, + + __callback: impl FnOnce( + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, + ) { + self.imp.invoke_procedure_with_callback::<_, RuntimeProfileRechargeOrderExpirationClaimProcedureResult>( + "claim_profile_recharge_order_expiration_schedule_and_return", + ClaimProfileRechargeOrderExpirationScheduleAndReturnArgs { input, }, + __callback, + ); + } +} diff --git a/server-rs/crates/spacetime-client/src/module_bindings/claim_profile_task_reward_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/claim_profile_task_reward_and_return_procedure.rs index 5a386f3cd..ea5010707 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/claim_profile_task_reward_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/claim_profile_task_reward_and_return_procedure.rs @@ -31,10 +31,10 @@ pub trait claim_profile_task_reward_and_return { input: RuntimeProfileTaskClaimInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl claim_profile_task_reward_and_return for super::RemoteProcedures { input: RuntimeProfileTaskClaimInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, RuntimeProfileTaskClaimProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/claim_puzzle_background_compile_task_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/claim_puzzle_background_compile_task_procedure.rs index 45b9de6db..e43e713fe 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/claim_puzzle_background_compile_task_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/claim_puzzle_background_compile_task_procedure.rs @@ -31,10 +31,10 @@ pub trait claim_puzzle_background_compile_task { input: PuzzleBackgroundCompileTaskClaimInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl claim_puzzle_background_compile_task for super::RemoteProcedures { input: PuzzleBackgroundCompileTaskClaimInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, PuzzleBackgroundCompileTaskProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/claim_puzzle_work_point_incentive_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/claim_puzzle_work_point_incentive_procedure.rs index f7ac8d756..1d7872222 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/claim_puzzle_work_point_incentive_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/claim_puzzle_work_point_incentive_procedure.rs @@ -31,10 +31,10 @@ pub trait claim_puzzle_work_point_incentive { input: PuzzleWorkPointIncentiveClaimInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl claim_puzzle_work_point_incentive for super::RemoteProcedures { input: PuzzleWorkPointIncentiveClaimInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, PuzzleWorkProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/clear_database_migration_import_chunks_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/clear_database_migration_import_chunks_procedure.rs index 51146e998..d05fcdf27 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/clear_database_migration_import_chunks_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/clear_database_migration_import_chunks_procedure.rs @@ -34,10 +34,10 @@ pub trait clear_database_migration_import_chunks { input: DatabaseMigrationImportChunksClearInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -47,10 +47,10 @@ impl clear_database_migration_import_chunks for super::RemoteProcedures { input: DatabaseMigrationImportChunksClearInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, DatabaseMigrationProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/clear_platform_browse_history_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/clear_platform_browse_history_and_return_procedure.rs index 2e6238453..c8ba8d497 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/clear_platform_browse_history_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/clear_platform_browse_history_and_return_procedure.rs @@ -31,10 +31,10 @@ pub trait clear_platform_browse_history_and_return { input: RuntimeBrowseHistoryClearInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl clear_platform_browse_history_and_return for super::RemoteProcedures { input: RuntimeBrowseHistoryClearInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, RuntimeBrowseHistoryProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/click_match_3_d_item_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/click_match_3_d_item_procedure.rs index 6070a62d8..278845ba6 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/click_match_3_d_item_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/click_match_3_d_item_procedure.rs @@ -31,10 +31,10 @@ pub trait click_match_3_d_item { input: Match3DRunClickInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl click_match_3_d_item for super::RemoteProcedures { input: Match3DRunClickInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, Match3DClickItemProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/close_profile_recharge_order_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/close_profile_recharge_order_and_return_procedure.rs new file mode 100644 index 000000000..984e99294 --- /dev/null +++ b/server-rs/crates/spacetime-client/src/module_bindings/close_profile_recharge_order_and_return_procedure.rs @@ -0,0 +1,62 @@ +// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE +// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD. + +#![allow(unused, clippy::all)] +use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws}; + +use super::runtime_profile_recharge_center_procedure_result_type::RuntimeProfileRechargeCenterProcedureResult; +use super::runtime_profile_recharge_order_close_input_type::RuntimeProfileRechargeOrderCloseInput; + +#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)] +#[sats(crate = __lib)] +struct CloseProfileRechargeOrderAndReturnArgs { + pub input: RuntimeProfileRechargeOrderCloseInput, +} + +impl __sdk::InModule for CloseProfileRechargeOrderAndReturnArgs { + type Module = super::RemoteModule; +} + +#[allow(non_camel_case_types)] +/// Extension trait for access to the procedure `close_profile_recharge_order_and_return`. +/// +/// Implemented for [`super::RemoteProcedures`]. +pub trait close_profile_recharge_order_and_return { + fn close_profile_recharge_order_and_return( + &self, + input: RuntimeProfileRechargeOrderCloseInput, + ) { + self.close_profile_recharge_order_and_return_then(input, |_, _| {}); + } + + fn close_profile_recharge_order_and_return_then( + &self, + input: RuntimeProfileRechargeOrderCloseInput, + + __callback: impl FnOnce( + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, + ); +} + +impl close_profile_recharge_order_and_return for super::RemoteProcedures { + fn close_profile_recharge_order_and_return_then( + &self, + input: RuntimeProfileRechargeOrderCloseInput, + + __callback: impl FnOnce( + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, + ) { + self.imp + .invoke_procedure_with_callback::<_, RuntimeProfileRechargeCenterProcedureResult>( + "close_profile_recharge_order_and_return", + CloseProfileRechargeOrderAndReturnArgs { input }, + __callback, + ); + } +} diff --git a/server-rs/crates/spacetime-client/src/module_bindings/compile_big_fish_draft_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/compile_big_fish_draft_procedure.rs index 6eea6571a..bafe95a65 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/compile_big_fish_draft_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/compile_big_fish_draft_procedure.rs @@ -31,10 +31,10 @@ pub trait compile_big_fish_draft { input: BigFishDraftCompileInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl compile_big_fish_draft for super::RemoteProcedures { input: BigFishDraftCompileInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, BigFishSessionProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/compile_custom_world_published_profile_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/compile_custom_world_published_profile_procedure.rs index aefbe6029..67706fab4 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/compile_custom_world_published_profile_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/compile_custom_world_published_profile_procedure.rs @@ -34,10 +34,10 @@ pub trait compile_custom_world_published_profile { input: CustomWorldPublishedProfileCompileInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -47,10 +47,10 @@ impl compile_custom_world_published_profile for super::RemoteProcedures { input: CustomWorldPublishedProfileCompileInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, CustomWorldPublishedProfileCompileResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/compile_jump_hop_draft_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/compile_jump_hop_draft_procedure.rs index fe89daba5..f0479afaf 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/compile_jump_hop_draft_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/compile_jump_hop_draft_procedure.rs @@ -31,10 +31,10 @@ pub trait compile_jump_hop_draft { input: JumpHopDraftCompileInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl compile_jump_hop_draft for super::RemoteProcedures { input: JumpHopDraftCompileInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, JumpHopAgentSessionProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/compile_match_3_d_draft_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/compile_match_3_d_draft_procedure.rs index d6db07879..1a7a97ed1 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/compile_match_3_d_draft_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/compile_match_3_d_draft_procedure.rs @@ -31,10 +31,10 @@ pub trait compile_match_3_d_draft { input: Match3DDraftCompileInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl compile_match_3_d_draft for super::RemoteProcedures { input: Match3DDraftCompileInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, Match3DAgentSessionProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/compile_puzzle_agent_draft_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/compile_puzzle_agent_draft_procedure.rs index 7badcdaea..177c0c40c 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/compile_puzzle_agent_draft_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/compile_puzzle_agent_draft_procedure.rs @@ -31,10 +31,10 @@ pub trait compile_puzzle_agent_draft { input: PuzzleDraftCompileInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl compile_puzzle_agent_draft for super::RemoteProcedures { input: PuzzleDraftCompileInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, PuzzleAgentSessionProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/compile_puzzle_clear_draft_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/compile_puzzle_clear_draft_procedure.rs index ca73cd1ee..79726bb52 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/compile_puzzle_clear_draft_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/compile_puzzle_clear_draft_procedure.rs @@ -31,10 +31,10 @@ pub trait compile_puzzle_clear_draft { input: PuzzleClearDraftCompileInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl compile_puzzle_clear_draft for super::RemoteProcedures { input: PuzzleClearDraftCompileInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, PuzzleClearAgentSessionProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/compile_square_hole_draft_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/compile_square_hole_draft_procedure.rs index ee6766b0b..0b715fc44 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/compile_square_hole_draft_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/compile_square_hole_draft_procedure.rs @@ -31,10 +31,10 @@ pub trait compile_square_hole_draft { input: SquareHoleDraftCompileInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl compile_square_hole_draft for super::RemoteProcedures { input: SquareHoleDraftCompileInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, SquareHoleAgentSessionProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/compile_visual_novel_work_profile_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/compile_visual_novel_work_profile_procedure.rs index 457f98095..e6d5f25bb 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/compile_visual_novel_work_profile_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/compile_visual_novel_work_profile_procedure.rs @@ -31,10 +31,10 @@ pub trait compile_visual_novel_work_profile { input: VisualNovelWorkCompileInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl compile_visual_novel_work_profile for super::RemoteProcedures { input: VisualNovelWorkCompileInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, VisualNovelAgentSessionProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/compile_wooden_fish_draft_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/compile_wooden_fish_draft_procedure.rs index 99e98ca89..61c7b013f 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/compile_wooden_fish_draft_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/compile_wooden_fish_draft_procedure.rs @@ -31,10 +31,10 @@ pub trait compile_wooden_fish_draft { input: WoodenFishDraftCompileInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl compile_wooden_fish_draft for super::RemoteProcedures { input: WoodenFishDraftCompileInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, WoodenFishAgentSessionProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/complete_ai_stage_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/complete_ai_stage_and_return_procedure.rs index 51375935c..e59ab8f0e 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/complete_ai_stage_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/complete_ai_stage_and_return_procedure.rs @@ -31,10 +31,10 @@ pub trait complete_ai_stage_and_return { input: AiStageCompletionInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl complete_ai_stage_and_return for super::RemoteProcedures { input: AiStageCompletionInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, AiTaskProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/complete_ai_task_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/complete_ai_task_and_return_procedure.rs index 040af6392..ca7eab9f8 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/complete_ai_task_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/complete_ai_task_and_return_procedure.rs @@ -31,10 +31,10 @@ pub trait complete_ai_task_and_return { input: AiTaskFinishInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl complete_ai_task_and_return for super::RemoteProcedures { input: AiTaskFinishInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, AiTaskProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/complete_external_generation_job_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/complete_external_generation_job_and_return_procedure.rs index 9c923b968..cebd89edd 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/complete_external_generation_job_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/complete_external_generation_job_and_return_procedure.rs @@ -34,10 +34,10 @@ pub trait complete_external_generation_job_and_return { input: ExternalGenerationJobCompleteInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -47,10 +47,10 @@ impl complete_external_generation_job_and_return for super::RemoteProcedures { input: ExternalGenerationJobCompleteInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, ExternalGenerationJobProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/complete_profile_recharge_order_expiration_schedule_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/complete_profile_recharge_order_expiration_schedule_and_return_procedure.rs new file mode 100644 index 000000000..64040eb0e --- /dev/null +++ b/server-rs/crates/spacetime-client/src/module_bindings/complete_profile_recharge_order_expiration_schedule_and_return_procedure.rs @@ -0,0 +1,67 @@ +// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE +// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD. + +#![allow(unused, clippy::all)] +use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws}; + +use super::runtime_profile_recharge_order_expiration_complete_input_type::RuntimeProfileRechargeOrderExpirationCompleteInput; +use super::runtime_profile_recharge_order_expiration_complete_procedure_result_type::RuntimeProfileRechargeOrderExpirationCompleteProcedureResult; + +#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)] +#[sats(crate = __lib)] +struct CompleteProfileRechargeOrderExpirationScheduleAndReturnArgs { + pub input: RuntimeProfileRechargeOrderExpirationCompleteInput, +} + +impl __sdk::InModule for CompleteProfileRechargeOrderExpirationScheduleAndReturnArgs { + type Module = super::RemoteModule; +} + +#[allow(non_camel_case_types)] +/// Extension trait for access to the procedure `complete_profile_recharge_order_expiration_schedule_and_return`. +/// +/// Implemented for [`super::RemoteProcedures`]. +pub trait complete_profile_recharge_order_expiration_schedule_and_return { + fn complete_profile_recharge_order_expiration_schedule_and_return( + &self, + input: RuntimeProfileRechargeOrderExpirationCompleteInput, + ) { + self.complete_profile_recharge_order_expiration_schedule_and_return_then(input, |_, _| {}); + } + + fn complete_profile_recharge_order_expiration_schedule_and_return_then( + &self, + input: RuntimeProfileRechargeOrderExpirationCompleteInput, + + __callback: impl FnOnce( + &super::ProcedureEventContext, + Result< + RuntimeProfileRechargeOrderExpirationCompleteProcedureResult, + __sdk::InternalError, + >, + ) + Send + + 'static, + ); +} + +impl complete_profile_recharge_order_expiration_schedule_and_return for super::RemoteProcedures { + fn complete_profile_recharge_order_expiration_schedule_and_return_then( + &self, + input: RuntimeProfileRechargeOrderExpirationCompleteInput, + + __callback: impl FnOnce( + &super::ProcedureEventContext, + Result< + RuntimeProfileRechargeOrderExpirationCompleteProcedureResult, + __sdk::InternalError, + >, + ) + Send + + 'static, + ) { + self.imp.invoke_procedure_with_callback::<_, RuntimeProfileRechargeOrderExpirationCompleteProcedureResult>( + "complete_profile_recharge_order_expiration_schedule_and_return", + CompleteProfileRechargeOrderExpirationScheduleAndReturnArgs { input, }, + __callback, + ); + } +} diff --git a/server-rs/crates/spacetime-client/src/module_bindings/confirm_asset_object_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/confirm_asset_object_and_return_procedure.rs index 0b4f26b2b..cc65f7445 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/confirm_asset_object_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/confirm_asset_object_and_return_procedure.rs @@ -31,10 +31,10 @@ pub trait confirm_asset_object_and_return { input: AssetObjectUpsertInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl confirm_asset_object_and_return for super::RemoteProcedures { input: AssetObjectUpsertInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, AssetObjectProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/confirm_asset_object_reducer.rs b/server-rs/crates/spacetime-client/src/module_bindings/confirm_asset_object_reducer.rs index 183c2efa8..f5edb63a4 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/confirm_asset_object_reducer.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/confirm_asset_object_reducer.rs @@ -47,9 +47,11 @@ pub trait confirm_asset_object { &self, input: AssetObjectUpsertInput, - callback: impl FnOnce(&super::ReducerEventContext, Result, __sdk::InternalError>) - + Send - + 'static, + callback: impl FnOnce( + &super::ReducerEventContext, + Result, __sdk::InternalError>, + ) + Send + + 'static, ) -> __sdk::Result<()>; } @@ -58,9 +60,11 @@ impl confirm_asset_object for super::RemoteReducers { &self, input: AssetObjectUpsertInput, - callback: impl FnOnce(&super::ReducerEventContext, Result, __sdk::InternalError>) - + Send - + 'static, + callback: impl FnOnce( + &super::ReducerEventContext, + Result, __sdk::InternalError>, + ) + Send + + 'static, ) -> __sdk::Result<()> { self.imp .invoke_reducer_with_callback(ConfirmAssetObjectArgs { input }, callback) diff --git a/server-rs/crates/spacetime-client/src/module_bindings/consume_profile_wallet_points_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/consume_profile_wallet_points_and_return_procedure.rs index 3d3e47a20..11394b665 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/consume_profile_wallet_points_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/consume_profile_wallet_points_and_return_procedure.rs @@ -31,10 +31,10 @@ pub trait consume_profile_wallet_points_and_return { input: RuntimeProfileWalletAdjustmentInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl consume_profile_wallet_points_and_return for super::RemoteProcedures { input: RuntimeProfileWalletAdjustmentInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, RuntimeProfileWalletAdjustmentProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/continue_story_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/continue_story_and_return_procedure.rs index 0d58ec1b8..1c2b51d8d 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/continue_story_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/continue_story_and_return_procedure.rs @@ -31,10 +31,10 @@ pub trait continue_story_and_return { input: StoryContinueInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl continue_story_and_return for super::RemoteProcedures { input: StoryContinueInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, StorySessionProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/continue_story_reducer.rs b/server-rs/crates/spacetime-client/src/module_bindings/continue_story_reducer.rs index 4117cfae5..fb35bd1f4 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/continue_story_reducer.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/continue_story_reducer.rs @@ -47,9 +47,11 @@ pub trait continue_story { &self, input: StoryContinueInput, - callback: impl FnOnce(&super::ReducerEventContext, Result, __sdk::InternalError>) - + Send - + 'static, + callback: impl FnOnce( + &super::ReducerEventContext, + Result, __sdk::InternalError>, + ) + Send + + 'static, ) -> __sdk::Result<()>; } @@ -58,9 +60,11 @@ impl continue_story for super::RemoteReducers { &self, input: StoryContinueInput, - callback: impl FnOnce(&super::ReducerEventContext, Result, __sdk::InternalError>) - + Send - + 'static, + callback: impl FnOnce( + &super::ReducerEventContext, + Result, __sdk::InternalError>, + ) + Send + + 'static, ) -> __sdk::Result<()> { self.imp .invoke_reducer_with_callback(ContinueStoryArgs { input }, callback) diff --git a/server-rs/crates/spacetime-client/src/module_bindings/create_ai_task_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/create_ai_task_and_return_procedure.rs index 20d8ceee1..a2f40fd06 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/create_ai_task_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/create_ai_task_and_return_procedure.rs @@ -31,10 +31,10 @@ pub trait create_ai_task_and_return { input: AiTaskCreateInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl create_ai_task_and_return for super::RemoteProcedures { input: AiTaskCreateInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, AiTaskProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/create_ai_task_reducer.rs b/server-rs/crates/spacetime-client/src/module_bindings/create_ai_task_reducer.rs index 213f28e58..b87207f02 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/create_ai_task_reducer.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/create_ai_task_reducer.rs @@ -47,9 +47,11 @@ pub trait create_ai_task { &self, input: AiTaskCreateInput, - callback: impl FnOnce(&super::ReducerEventContext, Result, __sdk::InternalError>) - + Send - + 'static, + callback: impl FnOnce( + &super::ReducerEventContext, + Result, __sdk::InternalError>, + ) + Send + + 'static, ) -> __sdk::Result<()>; } @@ -58,9 +60,11 @@ impl create_ai_task for super::RemoteReducers { &self, input: AiTaskCreateInput, - callback: impl FnOnce(&super::ReducerEventContext, Result, __sdk::InternalError>) - + Send - + 'static, + callback: impl FnOnce( + &super::ReducerEventContext, + Result, __sdk::InternalError>, + ) + Send + + 'static, ) -> __sdk::Result<()> { self.imp .invoke_reducer_with_callback(CreateAiTaskArgs { input }, callback) diff --git a/server-rs/crates/spacetime-client/src/module_bindings/create_bark_battle_draft_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/create_bark_battle_draft_procedure.rs index dbc6f3174..87e104b6b 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/create_bark_battle_draft_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/create_bark_battle_draft_procedure.rs @@ -31,10 +31,10 @@ pub trait create_bark_battle_draft { input: BarkBattleDraftCreateInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl create_bark_battle_draft for super::RemoteProcedures { input: BarkBattleDraftCreateInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, BarkBattleProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/create_battle_state_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/create_battle_state_and_return_procedure.rs index ef11107a8..c028ba4e9 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/create_battle_state_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/create_battle_state_and_return_procedure.rs @@ -31,10 +31,10 @@ pub trait create_battle_state_and_return { input: BattleStateInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl create_battle_state_and_return for super::RemoteProcedures { input: BattleStateInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, BattleStateProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/create_battle_state_reducer.rs b/server-rs/crates/spacetime-client/src/module_bindings/create_battle_state_reducer.rs index 1072f8a53..7f34eab2e 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/create_battle_state_reducer.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/create_battle_state_reducer.rs @@ -47,9 +47,11 @@ pub trait create_battle_state { &self, input: BattleStateInput, - callback: impl FnOnce(&super::ReducerEventContext, Result, __sdk::InternalError>) - + Send - + 'static, + callback: impl FnOnce( + &super::ReducerEventContext, + Result, __sdk::InternalError>, + ) + Send + + 'static, ) -> __sdk::Result<()>; } @@ -58,9 +60,11 @@ impl create_battle_state for super::RemoteReducers { &self, input: BattleStateInput, - callback: impl FnOnce(&super::ReducerEventContext, Result, __sdk::InternalError>) - + Send - + 'static, + callback: impl FnOnce( + &super::ReducerEventContext, + Result, __sdk::InternalError>, + ) + Send + + 'static, ) -> __sdk::Result<()> { self.imp .invoke_reducer_with_callback(CreateBattleStateArgs { input }, callback) diff --git a/server-rs/crates/spacetime-client/src/module_bindings/create_big_fish_session_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/create_big_fish_session_procedure.rs index bc67436e1..6e48521ad 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/create_big_fish_session_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/create_big_fish_session_procedure.rs @@ -31,10 +31,10 @@ pub trait create_big_fish_session { input: BigFishSessionCreateInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl create_big_fish_session for super::RemoteProcedures { input: BigFishSessionCreateInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, BigFishSessionProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/create_custom_world_agent_session_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/create_custom_world_agent_session_procedure.rs index 6a08bcc7a..96a211624 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/create_custom_world_agent_session_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/create_custom_world_agent_session_procedure.rs @@ -31,10 +31,10 @@ pub trait create_custom_world_agent_session { input: CustomWorldAgentSessionCreateInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl create_custom_world_agent_session for super::RemoteProcedures { input: CustomWorldAgentSessionCreateInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, CustomWorldAgentSessionProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/create_editor_asset_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/create_editor_asset_and_return_procedure.rs index 8ca475434..e1926a0ef 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/create_editor_asset_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/create_editor_asset_and_return_procedure.rs @@ -31,10 +31,10 @@ pub trait create_editor_asset_and_return { input: EditorAssetCreateInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl create_editor_asset_and_return for super::RemoteProcedures { input: EditorAssetCreateInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, EditorAssetProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/create_editor_asset_folder_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/create_editor_asset_folder_and_return_procedure.rs index 33ec7f85c..e45dcf833 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/create_editor_asset_folder_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/create_editor_asset_folder_and_return_procedure.rs @@ -31,10 +31,10 @@ pub trait create_editor_asset_folder_and_return { input: EditorAssetFolderCreateInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl create_editor_asset_folder_and_return for super::RemoteProcedures { input: EditorAssetFolderCreateInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, EditorAssetFolderProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/create_editor_project_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/create_editor_project_and_return_procedure.rs index 7340d97d3..7c305c26e 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/create_editor_project_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/create_editor_project_and_return_procedure.rs @@ -31,10 +31,10 @@ pub trait create_editor_project_and_return { input: EditorProjectCreateInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl create_editor_project_and_return for super::RemoteProcedures { input: EditorProjectCreateInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, EditorProjectProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/create_editor_project_resource_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/create_editor_project_resource_and_return_procedure.rs index 649d2a3e0..957e3aff0 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/create_editor_project_resource_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/create_editor_project_resource_and_return_procedure.rs @@ -31,10 +31,10 @@ pub trait create_editor_project_resource_and_return { input: EditorProjectResourceCreateInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl create_editor_project_resource_and_return for super::RemoteProcedures { input: EditorProjectResourceCreateInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, EditorProjectResourceProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/create_external_api_key_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/create_external_api_key_and_return_procedure.rs index daf4a676f..7dc438368 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/create_external_api_key_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/create_external_api_key_and_return_procedure.rs @@ -31,10 +31,10 @@ pub trait create_external_api_key_and_return { input: ExternalApiKeyCreateInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl create_external_api_key_and_return for super::RemoteProcedures { input: ExternalApiKeyCreateInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, ExternalApiKeyProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/create_jump_hop_agent_session_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/create_jump_hop_agent_session_procedure.rs index e4eeb9047..6bfce7c52 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/create_jump_hop_agent_session_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/create_jump_hop_agent_session_procedure.rs @@ -31,10 +31,10 @@ pub trait create_jump_hop_agent_session { input: JumpHopAgentSessionCreateInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl create_jump_hop_agent_session for super::RemoteProcedures { input: JumpHopAgentSessionCreateInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, JumpHopAgentSessionProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/create_match_3_d_agent_session_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/create_match_3_d_agent_session_procedure.rs index c482c9c6b..717ef728a 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/create_match_3_d_agent_session_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/create_match_3_d_agent_session_procedure.rs @@ -31,10 +31,10 @@ pub trait create_match_3_d_agent_session { input: Match3DAgentSessionCreateInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl create_match_3_d_agent_session for super::RemoteProcedures { input: Match3DAgentSessionCreateInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, Match3DAgentSessionProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/create_profile_recharge_order_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/create_profile_recharge_order_and_return_procedure.rs index 893fbdf68..1c53f6aea 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/create_profile_recharge_order_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/create_profile_recharge_order_and_return_procedure.rs @@ -34,10 +34,10 @@ pub trait create_profile_recharge_order_and_return { input: RuntimeProfileRechargeOrderCreateInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -47,10 +47,10 @@ impl create_profile_recharge_order_and_return for super::RemoteProcedures { input: RuntimeProfileRechargeOrderCreateInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, RuntimeProfileRechargeCenterProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/create_puzzle_agent_session_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/create_puzzle_agent_session_procedure.rs index 9460692b7..62b770811 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/create_puzzle_agent_session_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/create_puzzle_agent_session_procedure.rs @@ -31,10 +31,10 @@ pub trait create_puzzle_agent_session { input: PuzzleAgentSessionCreateInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl create_puzzle_agent_session for super::RemoteProcedures { input: PuzzleAgentSessionCreateInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, PuzzleAgentSessionProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/create_puzzle_clear_agent_session_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/create_puzzle_clear_agent_session_procedure.rs index 382822ef4..1059b5c61 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/create_puzzle_clear_agent_session_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/create_puzzle_clear_agent_session_procedure.rs @@ -31,10 +31,10 @@ pub trait create_puzzle_clear_agent_session { input: PuzzleClearAgentSessionCreateInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl create_puzzle_clear_agent_session for super::RemoteProcedures { input: PuzzleClearAgentSessionCreateInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, PuzzleClearAgentSessionProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/create_square_hole_agent_session_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/create_square_hole_agent_session_procedure.rs index cd5403a59..d58dbfa6b 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/create_square_hole_agent_session_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/create_square_hole_agent_session_procedure.rs @@ -31,10 +31,10 @@ pub trait create_square_hole_agent_session { input: SquareHoleAgentSessionCreateInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl create_square_hole_agent_session for super::RemoteProcedures { input: SquareHoleAgentSessionCreateInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, SquareHoleAgentSessionProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/create_visual_novel_agent_session_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/create_visual_novel_agent_session_procedure.rs index ef82cfc18..c42cc766d 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/create_visual_novel_agent_session_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/create_visual_novel_agent_session_procedure.rs @@ -31,10 +31,10 @@ pub trait create_visual_novel_agent_session { input: VisualNovelAgentSessionCreateInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl create_visual_novel_agent_session for super::RemoteProcedures { input: VisualNovelAgentSessionCreateInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, VisualNovelAgentSessionProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/create_wooden_fish_agent_session_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/create_wooden_fish_agent_session_procedure.rs index aabcde5c6..ec6bec0d3 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/create_wooden_fish_agent_session_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/create_wooden_fish_agent_session_procedure.rs @@ -31,10 +31,10 @@ pub trait create_wooden_fish_agent_session { input: WoodenFishAgentSessionCreateInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl create_wooden_fish_agent_session for super::RemoteProcedures { input: WoodenFishAgentSessionCreateInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, WoodenFishAgentSessionProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/delete_bark_battle_work_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/delete_bark_battle_work_procedure.rs index 934e66021..f164baeca 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/delete_bark_battle_work_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/delete_bark_battle_work_procedure.rs @@ -31,10 +31,10 @@ pub trait delete_bark_battle_work { input: BarkBattleWorkDeleteInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl delete_bark_battle_work for super::RemoteProcedures { input: BarkBattleWorkDeleteInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, BarkBattleProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/delete_big_fish_work_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/delete_big_fish_work_procedure.rs index 51cc224f2..d2be83acb 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/delete_big_fish_work_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/delete_big_fish_work_procedure.rs @@ -31,10 +31,10 @@ pub trait delete_big_fish_work { input: BigFishWorkDeleteInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl delete_big_fish_work for super::RemoteProcedures { input: BigFishWorkDeleteInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, BigFishWorksProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/delete_custom_world_agent_session_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/delete_custom_world_agent_session_procedure.rs index 27341561e..398878304 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/delete_custom_world_agent_session_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/delete_custom_world_agent_session_procedure.rs @@ -31,10 +31,10 @@ pub trait delete_custom_world_agent_session { input: CustomWorldAgentSessionGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl delete_custom_world_agent_session for super::RemoteProcedures { input: CustomWorldAgentSessionGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, CustomWorldWorksListResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/delete_custom_world_profile_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/delete_custom_world_profile_and_return_procedure.rs index 246d4d003..5dc9da2fd 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/delete_custom_world_profile_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/delete_custom_world_profile_and_return_procedure.rs @@ -31,10 +31,10 @@ pub trait delete_custom_world_profile_and_return { input: CustomWorldProfileDeleteInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl delete_custom_world_profile_and_return for super::RemoteProcedures { input: CustomWorldProfileDeleteInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, CustomWorldProfileListResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/delete_editor_asset_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/delete_editor_asset_and_return_procedure.rs index 4c71ecd53..a7c50753a 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/delete_editor_asset_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/delete_editor_asset_and_return_procedure.rs @@ -31,10 +31,10 @@ pub trait delete_editor_asset_and_return { input: EditorAssetDeleteInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl delete_editor_asset_and_return for super::RemoteProcedures { input: EditorAssetDeleteInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, EditorAssetProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/delete_editor_asset_folder_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/delete_editor_asset_folder_and_return_procedure.rs index 6500a7c79..15aae6008 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/delete_editor_asset_folder_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/delete_editor_asset_folder_and_return_procedure.rs @@ -31,10 +31,10 @@ pub trait delete_editor_asset_folder_and_return { input: EditorAssetFolderDeleteInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl delete_editor_asset_folder_and_return for super::RemoteProcedures { input: EditorAssetFolderDeleteInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, EditorAssetFolderProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/delete_editor_project_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/delete_editor_project_and_return_procedure.rs index 529aec929..4586a8691 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/delete_editor_project_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/delete_editor_project_and_return_procedure.rs @@ -31,10 +31,10 @@ pub trait delete_editor_project_and_return { input: EditorProjectDeleteInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl delete_editor_project_and_return for super::RemoteProcedures { input: EditorProjectDeleteInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, EditorProjectDeleteProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/delete_jump_hop_work_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/delete_jump_hop_work_procedure.rs index 9cad50c50..407411c0d 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/delete_jump_hop_work_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/delete_jump_hop_work_procedure.rs @@ -31,10 +31,10 @@ pub trait delete_jump_hop_work { input: JumpHopWorkDeleteInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl delete_jump_hop_work for super::RemoteProcedures { input: JumpHopWorkDeleteInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, JumpHopWorksProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/delete_match_3_d_work_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/delete_match_3_d_work_procedure.rs index c26b2dc81..c87cd16a8 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/delete_match_3_d_work_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/delete_match_3_d_work_procedure.rs @@ -31,10 +31,10 @@ pub trait delete_match_3_d_work { input: Match3DWorkDeleteInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl delete_match_3_d_work for super::RemoteProcedures { input: Match3DWorkDeleteInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, Match3DWorksProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/delete_puzzle_work_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/delete_puzzle_work_procedure.rs index 5b7e5375d..fc8152c56 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/delete_puzzle_work_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/delete_puzzle_work_procedure.rs @@ -31,10 +31,10 @@ pub trait delete_puzzle_work { input: PuzzleWorkDeleteInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl delete_puzzle_work for super::RemoteProcedures { input: PuzzleWorkDeleteInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, PuzzleWorksProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/delete_runtime_snapshot_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/delete_runtime_snapshot_and_return_procedure.rs index 6373a19b5..9173255ab 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/delete_runtime_snapshot_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/delete_runtime_snapshot_and_return_procedure.rs @@ -31,10 +31,10 @@ pub trait delete_runtime_snapshot_and_return { input: RuntimeSnapshotDeleteInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl delete_runtime_snapshot_and_return for super::RemoteProcedures { input: RuntimeSnapshotDeleteInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, RuntimeSnapshotProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/delete_square_hole_work_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/delete_square_hole_work_procedure.rs index 3469c3141..3a8db794b 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/delete_square_hole_work_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/delete_square_hole_work_procedure.rs @@ -31,10 +31,10 @@ pub trait delete_square_hole_work { input: SquareHoleWorkDeleteInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl delete_square_hole_work for super::RemoteProcedures { input: SquareHoleWorkDeleteInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, SquareHoleWorksProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/delete_visual_novel_work_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/delete_visual_novel_work_procedure.rs index 61ed99045..eac6ceacd 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/delete_visual_novel_work_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/delete_visual_novel_work_procedure.rs @@ -31,10 +31,10 @@ pub trait delete_visual_novel_work { input: VisualNovelWorkDeleteInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl delete_visual_novel_work for super::RemoteProcedures { input: VisualNovelWorkDeleteInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, VisualNovelWorksProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/delete_wooden_fish_work_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/delete_wooden_fish_work_procedure.rs index c0050f072..7ba06da31 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/delete_wooden_fish_work_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/delete_wooden_fish_work_procedure.rs @@ -31,10 +31,10 @@ pub trait delete_wooden_fish_work { input: WoodenFishWorkDeleteInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl delete_wooden_fish_work for super::RemoteProcedures { input: WoodenFishWorkDeleteInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, WoodenFishWorksProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/drag_puzzle_piece_or_group_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/drag_puzzle_piece_or_group_procedure.rs index daad89bd9..1207f7b53 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/drag_puzzle_piece_or_group_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/drag_puzzle_piece_or_group_procedure.rs @@ -31,10 +31,10 @@ pub trait drag_puzzle_piece_or_group { input: PuzzleRunDragInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl drag_puzzle_piece_or_group for super::RemoteProcedures { input: PuzzleRunDragInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, PuzzleRunProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/drop_square_hole_shape_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/drop_square_hole_shape_procedure.rs index 91d6bb611..4056e06ab 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/drop_square_hole_shape_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/drop_square_hole_shape_procedure.rs @@ -31,10 +31,10 @@ pub trait drop_square_hole_shape { input: SquareHoleRunDropInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl drop_square_hole_shape for super::RemoteProcedures { input: SquareHoleRunDropInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, SquareHoleDropShapeProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/enqueue_external_generation_job_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/enqueue_external_generation_job_and_return_procedure.rs index cd14e1432..e38fdf29d 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/enqueue_external_generation_job_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/enqueue_external_generation_job_and_return_procedure.rs @@ -31,10 +31,10 @@ pub trait enqueue_external_generation_job_and_return { input: ExternalGenerationJobEnqueueInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl enqueue_external_generation_job_and_return for super::RemoteProcedures { input: ExternalGenerationJobEnqueueInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, ExternalGenerationJobProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/ensure_analytics_date_dimension_for_date_reducer.rs b/server-rs/crates/spacetime-client/src/module_bindings/ensure_analytics_date_dimension_for_date_reducer.rs index 30b9ba357..a6ea3098f 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/ensure_analytics_date_dimension_for_date_reducer.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/ensure_analytics_date_dimension_for_date_reducer.rs @@ -50,9 +50,11 @@ pub trait ensure_analytics_date_dimension_for_date { &self, input: AnalyticsDateDimensionEnsureInput, - callback: impl FnOnce(&super::ReducerEventContext, Result, __sdk::InternalError>) - + Send - + 'static, + callback: impl FnOnce( + &super::ReducerEventContext, + Result, __sdk::InternalError>, + ) + Send + + 'static, ) -> __sdk::Result<()>; } @@ -61,9 +63,11 @@ impl ensure_analytics_date_dimension_for_date for super::RemoteReducers { &self, input: AnalyticsDateDimensionEnsureInput, - callback: impl FnOnce(&super::ReducerEventContext, Result, __sdk::InternalError>) - + Send - + 'static, + callback: impl FnOnce( + &super::ReducerEventContext, + Result, __sdk::InternalError>, + ) + Send + + 'static, ) -> __sdk::Result<()> { self.imp.invoke_reducer_with_callback( EnsureAnalyticsDateDimensionForDateArgs { input }, diff --git a/server-rs/crates/spacetime-client/src/module_bindings/execute_custom_world_agent_action_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/execute_custom_world_agent_action_procedure.rs index e778877c8..c10084666 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/execute_custom_world_agent_action_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/execute_custom_world_agent_action_procedure.rs @@ -31,10 +31,10 @@ pub trait execute_custom_world_agent_action { input: CustomWorldAgentActionExecuteInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl execute_custom_world_agent_action for super::RemoteProcedures { input: CustomWorldAgentActionExecuteInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, CustomWorldAgentActionExecuteResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/export_auth_store_projection_from_tables_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/export_auth_store_projection_from_tables_procedure.rs index ece547ce8..9334aa833 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/export_auth_store_projection_from_tables_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/export_auth_store_projection_from_tables_procedure.rs @@ -27,10 +27,10 @@ pub trait export_auth_store_projection_from_tables { &self, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -39,10 +39,10 @@ impl export_auth_store_projection_from_tables for super::RemoteProcedures { &self, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, AuthStoreProjectionProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/export_database_migration_to_file_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/export_database_migration_to_file_procedure.rs index 3dfe18f83..d850737bc 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/export_database_migration_to_file_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/export_database_migration_to_file_procedure.rs @@ -31,10 +31,10 @@ pub trait export_database_migration_to_file { input: DatabaseMigrationExportInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl export_database_migration_to_file for super::RemoteProcedures { input: DatabaseMigrationExportInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, DatabaseMigrationProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/fail_ai_task_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/fail_ai_task_and_return_procedure.rs index 46090a010..3194799b9 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/fail_ai_task_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/fail_ai_task_and_return_procedure.rs @@ -31,10 +31,10 @@ pub trait fail_ai_task_and_return { input: AiTaskFailureInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl fail_ai_task_and_return for super::RemoteProcedures { input: AiTaskFailureInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, AiTaskProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/fail_external_generation_job_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/fail_external_generation_job_and_return_procedure.rs index 46c1f8846..92be5608f 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/fail_external_generation_job_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/fail_external_generation_job_and_return_procedure.rs @@ -31,10 +31,10 @@ pub trait fail_external_generation_job_and_return { input: ExternalGenerationJobFailInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl fail_external_generation_job_and_return for super::RemoteProcedures { input: ExternalGenerationJobFailInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, ExternalGenerationJobProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/finalize_big_fish_agent_message_turn_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/finalize_big_fish_agent_message_turn_procedure.rs index 9f5c8e7a6..a2dd9fd57 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/finalize_big_fish_agent_message_turn_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/finalize_big_fish_agent_message_turn_procedure.rs @@ -31,10 +31,10 @@ pub trait finalize_big_fish_agent_message_turn { input: BigFishMessageFinalizeInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl finalize_big_fish_agent_message_turn for super::RemoteProcedures { input: BigFishMessageFinalizeInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, BigFishSessionProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/finalize_custom_world_agent_message_turn_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/finalize_custom_world_agent_message_turn_procedure.rs index fad75a7be..f670f9b6f 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/finalize_custom_world_agent_message_turn_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/finalize_custom_world_agent_message_turn_procedure.rs @@ -34,10 +34,10 @@ pub trait finalize_custom_world_agent_message_turn { input: CustomWorldAgentMessageFinalizeInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -47,10 +47,10 @@ impl finalize_custom_world_agent_message_turn for super::RemoteProcedures { input: CustomWorldAgentMessageFinalizeInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, CustomWorldAgentOperationProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/finalize_match_3_d_agent_message_turn_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/finalize_match_3_d_agent_message_turn_procedure.rs index 9d51ab95d..ea0ec2258 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/finalize_match_3_d_agent_message_turn_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/finalize_match_3_d_agent_message_turn_procedure.rs @@ -31,10 +31,10 @@ pub trait finalize_match_3_d_agent_message_turn { input: Match3DAgentMessageFinalizeInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl finalize_match_3_d_agent_message_turn for super::RemoteProcedures { input: Match3DAgentMessageFinalizeInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, Match3DAgentSessionProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/finalize_puzzle_agent_message_turn_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/finalize_puzzle_agent_message_turn_procedure.rs index 0014d3943..7f06aafae 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/finalize_puzzle_agent_message_turn_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/finalize_puzzle_agent_message_turn_procedure.rs @@ -31,10 +31,10 @@ pub trait finalize_puzzle_agent_message_turn { input: PuzzleAgentMessageFinalizeInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl finalize_puzzle_agent_message_turn for super::RemoteProcedures { input: PuzzleAgentMessageFinalizeInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, PuzzleAgentSessionProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/finalize_square_hole_agent_message_turn_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/finalize_square_hole_agent_message_turn_procedure.rs index 75808f109..350f160de 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/finalize_square_hole_agent_message_turn_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/finalize_square_hole_agent_message_turn_procedure.rs @@ -31,10 +31,10 @@ pub trait finalize_square_hole_agent_message_turn { input: SquareHoleAgentMessageFinalizeInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl finalize_square_hole_agent_message_turn for super::RemoteProcedures { input: SquareHoleAgentMessageFinalizeInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, SquareHoleAgentSessionProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/finalize_visual_novel_agent_message_turn_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/finalize_visual_novel_agent_message_turn_procedure.rs index 5305f8e8b..08b475605 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/finalize_visual_novel_agent_message_turn_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/finalize_visual_novel_agent_message_turn_procedure.rs @@ -34,10 +34,10 @@ pub trait finalize_visual_novel_agent_message_turn { input: VisualNovelAgentMessageFinalizeInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -47,10 +47,10 @@ impl finalize_visual_novel_agent_message_turn for super::RemoteProcedures { input: VisualNovelAgentMessageFinalizeInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, VisualNovelAgentSessionProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/finish_bark_battle_run_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/finish_bark_battle_run_procedure.rs index 8eeaf0c11..28fc7ef3a 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/finish_bark_battle_run_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/finish_bark_battle_run_procedure.rs @@ -31,10 +31,10 @@ pub trait finish_bark_battle_run { input: BarkBattleRunFinishInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl finish_bark_battle_run for super::RemoteProcedures { input: BarkBattleRunFinishInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, BarkBattleProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/finish_match_3_d_time_up_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/finish_match_3_d_time_up_procedure.rs index 0d68dbd95..bd8496313 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/finish_match_3_d_time_up_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/finish_match_3_d_time_up_procedure.rs @@ -31,10 +31,10 @@ pub trait finish_match_3_d_time_up { input: Match3DRunTimeUpInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl finish_match_3_d_time_up for super::RemoteProcedures { input: Match3DRunTimeUpInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, Match3DRunProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/finish_square_hole_time_up_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/finish_square_hole_time_up_procedure.rs index f3b5ffc32..3ca46a0d7 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/finish_square_hole_time_up_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/finish_square_hole_time_up_procedure.rs @@ -31,10 +31,10 @@ pub trait finish_square_hole_time_up { input: SquareHoleRunTimeUpInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl finish_square_hole_time_up for super::RemoteProcedures { input: SquareHoleRunTimeUpInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, SquareHoleRunProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/finish_wooden_fish_run_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/finish_wooden_fish_run_procedure.rs index 240541fb7..30e452e1b 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/finish_wooden_fish_run_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/finish_wooden_fish_run_procedure.rs @@ -31,10 +31,10 @@ pub trait finish_wooden_fish_run { input: WoodenFishRunFinishInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl finish_wooden_fish_run for super::RemoteProcedures { input: WoodenFishRunFinishInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, WoodenFishRunProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/generate_big_fish_asset_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/generate_big_fish_asset_procedure.rs index 1a87c951d..144c5d40b 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/generate_big_fish_asset_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/generate_big_fish_asset_procedure.rs @@ -31,10 +31,10 @@ pub trait generate_big_fish_asset { input: BigFishAssetGenerateInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl generate_big_fish_asset for super::RemoteProcedures { input: BigFishAssetGenerateInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, BigFishSessionProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/get_bark_battle_run_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/get_bark_battle_run_procedure.rs index 87c3f82ad..bec98ca83 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/get_bark_battle_run_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/get_bark_battle_run_procedure.rs @@ -31,10 +31,10 @@ pub trait get_bark_battle_run { input: BarkBattleRunGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl get_bark_battle_run for super::RemoteProcedures { input: BarkBattleRunGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, BarkBattleProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/get_bark_battle_runtime_config_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/get_bark_battle_runtime_config_procedure.rs index f163d3b39..6e4364f2e 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/get_bark_battle_runtime_config_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/get_bark_battle_runtime_config_procedure.rs @@ -31,10 +31,10 @@ pub trait get_bark_battle_runtime_config { input: BarkBattleRuntimeConfigGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl get_bark_battle_runtime_config for super::RemoteProcedures { input: BarkBattleRuntimeConfigGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, BarkBattleProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/get_battle_state_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/get_battle_state_procedure.rs index a737fbdf0..0fcc276ca 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/get_battle_state_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/get_battle_state_procedure.rs @@ -31,10 +31,10 @@ pub trait get_battle_state { input: BattleStateQueryInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl get_battle_state for super::RemoteProcedures { input: BattleStateQueryInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, BattleStateProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/get_big_fish_run_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/get_big_fish_run_procedure.rs index 867a6759b..9a601ff29 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/get_big_fish_run_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/get_big_fish_run_procedure.rs @@ -31,10 +31,10 @@ pub trait get_big_fish_run { input: BigFishRunGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl get_big_fish_run for super::RemoteProcedures { input: BigFishRunGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, BigFishRunProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/get_big_fish_session_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/get_big_fish_session_procedure.rs index 0b0d78f1d..7f52f94b8 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/get_big_fish_session_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/get_big_fish_session_procedure.rs @@ -31,10 +31,10 @@ pub trait get_big_fish_session { input: BigFishSessionGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl get_big_fish_session for super::RemoteProcedures { input: BigFishSessionGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, BigFishSessionProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/get_chapter_progression_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/get_chapter_progression_procedure.rs index eef158dce..18f9ae27b 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/get_chapter_progression_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/get_chapter_progression_procedure.rs @@ -31,10 +31,10 @@ pub trait get_chapter_progression { input: ChapterProgressionGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl get_chapter_progression for super::RemoteProcedures { input: ChapterProgressionGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, ChapterProgressionProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/get_creation_entry_config_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/get_creation_entry_config_procedure.rs index eb840cdcb..8a3a38dde 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/get_creation_entry_config_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/get_creation_entry_config_procedure.rs @@ -27,10 +27,10 @@ pub trait get_creation_entry_config { &self, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -39,10 +39,10 @@ impl get_creation_entry_config for super::RemoteProcedures { &self, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, CreationEntryConfigProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/get_custom_world_agent_card_detail_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/get_custom_world_agent_card_detail_procedure.rs index 11a903298..e10343459 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/get_custom_world_agent_card_detail_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/get_custom_world_agent_card_detail_procedure.rs @@ -31,10 +31,10 @@ pub trait get_custom_world_agent_card_detail { input: CustomWorldAgentCardDetailGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl get_custom_world_agent_card_detail for super::RemoteProcedures { input: CustomWorldAgentCardDetailGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, CustomWorldDraftCardDetailResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/get_custom_world_agent_operation_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/get_custom_world_agent_operation_procedure.rs index 1c4ffd6af..cce1dbb53 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/get_custom_world_agent_operation_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/get_custom_world_agent_operation_procedure.rs @@ -31,10 +31,10 @@ pub trait get_custom_world_agent_operation { input: CustomWorldAgentOperationGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl get_custom_world_agent_operation for super::RemoteProcedures { input: CustomWorldAgentOperationGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, CustomWorldAgentOperationProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/get_custom_world_agent_session_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/get_custom_world_agent_session_procedure.rs index 212987e41..f4b678e9c 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/get_custom_world_agent_session_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/get_custom_world_agent_session_procedure.rs @@ -31,10 +31,10 @@ pub trait get_custom_world_agent_session { input: CustomWorldAgentSessionGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl get_custom_world_agent_session for super::RemoteProcedures { input: CustomWorldAgentSessionGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, CustomWorldAgentSessionProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/get_custom_world_gallery_detail_by_code_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/get_custom_world_gallery_detail_by_code_procedure.rs index 24768c431..a387cbaf7 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/get_custom_world_gallery_detail_by_code_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/get_custom_world_gallery_detail_by_code_procedure.rs @@ -31,10 +31,10 @@ pub trait get_custom_world_gallery_detail_by_code { input: CustomWorldGalleryDetailByCodeInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl get_custom_world_gallery_detail_by_code for super::RemoteProcedures { input: CustomWorldGalleryDetailByCodeInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, CustomWorldLibraryMutationResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/get_custom_world_gallery_detail_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/get_custom_world_gallery_detail_procedure.rs index f5127dcfa..d0e029ff8 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/get_custom_world_gallery_detail_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/get_custom_world_gallery_detail_procedure.rs @@ -31,10 +31,10 @@ pub trait get_custom_world_gallery_detail { input: CustomWorldGalleryDetailInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl get_custom_world_gallery_detail for super::RemoteProcedures { input: CustomWorldGalleryDetailInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, CustomWorldLibraryMutationResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/get_custom_world_library_detail_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/get_custom_world_library_detail_procedure.rs index ab99274ae..82bd1c3ca 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/get_custom_world_library_detail_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/get_custom_world_library_detail_procedure.rs @@ -31,10 +31,10 @@ pub trait get_custom_world_library_detail { input: CustomWorldLibraryDetailInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl get_custom_world_library_detail for super::RemoteProcedures { input: CustomWorldLibraryDetailInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, CustomWorldLibraryMutationResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/get_editor_asset_library_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/get_editor_asset_library_and_return_procedure.rs index dca803bbf..c1053c14c 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/get_editor_asset_library_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/get_editor_asset_library_and_return_procedure.rs @@ -31,10 +31,10 @@ pub trait get_editor_asset_library_and_return { input: EditorAssetLibraryGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl get_editor_asset_library_and_return for super::RemoteProcedures { input: EditorAssetLibraryGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, EditorAssetLibraryProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/get_editor_project_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/get_editor_project_and_return_procedure.rs index 07d5c4fe1..f01b87343 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/get_editor_project_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/get_editor_project_and_return_procedure.rs @@ -31,10 +31,10 @@ pub trait get_editor_project_and_return { input: EditorProjectGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl get_editor_project_and_return for super::RemoteProcedures { input: EditorProjectGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, EditorProjectProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/get_editor_showcase_campaign_config_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/get_editor_showcase_campaign_config_and_return_procedure.rs index baeb8c837..5d7332290 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/get_editor_showcase_campaign_config_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/get_editor_showcase_campaign_config_and_return_procedure.rs @@ -34,10 +34,10 @@ pub trait get_editor_showcase_campaign_config_and_return { input: EditorShowcaseCampaignConfigGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -47,10 +47,10 @@ impl get_editor_showcase_campaign_config_and_return for super::RemoteProcedures input: EditorShowcaseCampaignConfigGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, EditorShowcaseCampaignConfigProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/get_external_generation_job_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/get_external_generation_job_and_return_procedure.rs index e2bc98a33..51ce17456 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/get_external_generation_job_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/get_external_generation_job_and_return_procedure.rs @@ -31,10 +31,10 @@ pub trait get_external_generation_job_and_return { input: ExternalGenerationJobGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl get_external_generation_job_and_return for super::RemoteProcedures { input: ExternalGenerationJobGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, ExternalGenerationJobProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/get_external_generation_queue_stats_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/get_external_generation_queue_stats_and_return_procedure.rs index 9d7a98a05..429d22f4b 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/get_external_generation_queue_stats_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/get_external_generation_queue_stats_and_return_procedure.rs @@ -27,10 +27,10 @@ pub trait get_external_generation_queue_stats_and_return { &self, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -39,10 +39,10 @@ impl get_external_generation_queue_stats_and_return for super::RemoteProcedures &self, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, ExternalGenerationQueueStatsProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/get_jump_hop_agent_session_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/get_jump_hop_agent_session_procedure.rs index fde5cf939..482aa1a5d 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/get_jump_hop_agent_session_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/get_jump_hop_agent_session_procedure.rs @@ -31,10 +31,10 @@ pub trait get_jump_hop_agent_session { input: JumpHopAgentSessionGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl get_jump_hop_agent_session for super::RemoteProcedures { input: JumpHopAgentSessionGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, JumpHopAgentSessionProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/get_jump_hop_leaderboard_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/get_jump_hop_leaderboard_procedure.rs index 93176d49a..519e5acd8 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/get_jump_hop_leaderboard_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/get_jump_hop_leaderboard_procedure.rs @@ -31,10 +31,10 @@ pub trait get_jump_hop_leaderboard { input: JumpHopLeaderboardGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl get_jump_hop_leaderboard for super::RemoteProcedures { input: JumpHopLeaderboardGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, JumpHopLeaderboardProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/get_jump_hop_run_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/get_jump_hop_run_procedure.rs index 9f641d0fc..5c301da70 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/get_jump_hop_run_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/get_jump_hop_run_procedure.rs @@ -31,10 +31,10 @@ pub trait get_jump_hop_run { input: JumpHopRunGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl get_jump_hop_run for super::RemoteProcedures { input: JumpHopRunGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, JumpHopRunProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/get_jump_hop_work_profile_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/get_jump_hop_work_profile_procedure.rs index 62515a287..fd1fbd3eb 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/get_jump_hop_work_profile_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/get_jump_hop_work_profile_procedure.rs @@ -31,10 +31,10 @@ pub trait get_jump_hop_work_profile { input: JumpHopWorkGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl get_jump_hop_work_profile for super::RemoteProcedures { input: JumpHopWorkGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, JumpHopWorkProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/get_match_3_d_agent_session_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/get_match_3_d_agent_session_procedure.rs index 62d093b5d..574012d90 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/get_match_3_d_agent_session_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/get_match_3_d_agent_session_procedure.rs @@ -31,10 +31,10 @@ pub trait get_match_3_d_agent_session { input: Match3DAgentSessionGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl get_match_3_d_agent_session for super::RemoteProcedures { input: Match3DAgentSessionGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, Match3DAgentSessionProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/get_match_3_d_run_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/get_match_3_d_run_procedure.rs index 033e620c9..0a4722304 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/get_match_3_d_run_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/get_match_3_d_run_procedure.rs @@ -31,10 +31,10 @@ pub trait get_match_3_d_run { input: Match3DRunGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl get_match_3_d_run for super::RemoteProcedures { input: Match3DRunGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, Match3DRunProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/get_match_3_d_work_detail_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/get_match_3_d_work_detail_procedure.rs index 5a74982b4..0ea9f495b 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/get_match_3_d_work_detail_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/get_match_3_d_work_detail_procedure.rs @@ -31,10 +31,10 @@ pub trait get_match_3_d_work_detail { input: Match3DWorkGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl get_match_3_d_work_detail for super::RemoteProcedures { input: Match3DWorkGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, Match3DWorkProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/get_player_progression_or_default_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/get_player_progression_or_default_procedure.rs index 97c139fbf..38a1525aa 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/get_player_progression_or_default_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/get_player_progression_or_default_procedure.rs @@ -31,10 +31,10 @@ pub trait get_player_progression_or_default { input: PlayerProgressionGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl get_player_progression_or_default for super::RemoteProcedures { input: PlayerProgressionGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, PlayerProgressionProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/get_profile_dashboard_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/get_profile_dashboard_procedure.rs index 38200b75a..6c48fafb3 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/get_profile_dashboard_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/get_profile_dashboard_procedure.rs @@ -31,10 +31,10 @@ pub trait get_profile_dashboard { input: RuntimeProfileDashboardGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl get_profile_dashboard for super::RemoteProcedures { input: RuntimeProfileDashboardGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, RuntimeProfileDashboardProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/get_profile_play_stats_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/get_profile_play_stats_procedure.rs index 2ad47ed23..088f48122 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/get_profile_play_stats_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/get_profile_play_stats_procedure.rs @@ -31,10 +31,10 @@ pub trait get_profile_play_stats { input: RuntimeProfilePlayStatsGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl get_profile_play_stats for super::RemoteProcedures { input: RuntimeProfilePlayStatsGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, RuntimeProfilePlayStatsProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/get_profile_recharge_center_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/get_profile_recharge_center_procedure.rs index bf070c9c8..3e42f3d57 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/get_profile_recharge_center_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/get_profile_recharge_center_procedure.rs @@ -31,10 +31,10 @@ pub trait get_profile_recharge_center { input: RuntimeProfileRechargeCenterGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl get_profile_recharge_center for super::RemoteProcedures { input: RuntimeProfileRechargeCenterGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, RuntimeProfileRechargeCenterProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/get_profile_recharge_order_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/get_profile_recharge_order_and_return_procedure.rs index 437f0048b..f187bc6fb 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/get_profile_recharge_order_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/get_profile_recharge_order_and_return_procedure.rs @@ -31,10 +31,10 @@ pub trait get_profile_recharge_order_and_return { input: RuntimeProfileRechargeOrderGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl get_profile_recharge_order_and_return for super::RemoteProcedures { input: RuntimeProfileRechargeOrderGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, RuntimeProfileRechargeCenterProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/get_profile_referral_invite_center_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/get_profile_referral_invite_center_procedure.rs index 2b3dcdadc..c72214843 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/get_profile_referral_invite_center_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/get_profile_referral_invite_center_procedure.rs @@ -31,10 +31,10 @@ pub trait get_profile_referral_invite_center { input: RuntimeReferralInviteCenterGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl get_profile_referral_invite_center for super::RemoteProcedures { input: RuntimeReferralInviteCenterGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, RuntimeReferralInviteCenterProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/get_profile_task_center_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/get_profile_task_center_procedure.rs index 105a4f98c..0aa83260a 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/get_profile_task_center_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/get_profile_task_center_procedure.rs @@ -31,10 +31,10 @@ pub trait get_profile_task_center { input: RuntimeProfileTaskCenterGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl get_profile_task_center for super::RemoteProcedures { input: RuntimeProfileTaskCenterGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, RuntimeProfileTaskCenterProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/get_puzzle_agent_session_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/get_puzzle_agent_session_procedure.rs index 979293827..8aa5a78f3 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/get_puzzle_agent_session_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/get_puzzle_agent_session_procedure.rs @@ -31,10 +31,10 @@ pub trait get_puzzle_agent_session { input: PuzzleAgentSessionGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl get_puzzle_agent_session for super::RemoteProcedures { input: PuzzleAgentSessionGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, PuzzleAgentSessionProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/get_puzzle_clear_agent_session_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/get_puzzle_clear_agent_session_procedure.rs index a4d8c2549..34c2f8e3f 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/get_puzzle_clear_agent_session_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/get_puzzle_clear_agent_session_procedure.rs @@ -31,10 +31,10 @@ pub trait get_puzzle_clear_agent_session { input: PuzzleClearAgentSessionGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl get_puzzle_clear_agent_session for super::RemoteProcedures { input: PuzzleClearAgentSessionGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, PuzzleClearAgentSessionProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/get_puzzle_clear_runtime_run_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/get_puzzle_clear_runtime_run_procedure.rs index 7ab18b5fe..7a196e1ae 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/get_puzzle_clear_runtime_run_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/get_puzzle_clear_runtime_run_procedure.rs @@ -31,10 +31,10 @@ pub trait get_puzzle_clear_runtime_run { input: PuzzleClearRunGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl get_puzzle_clear_runtime_run for super::RemoteProcedures { input: PuzzleClearRunGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, PuzzleClearRunProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/get_puzzle_clear_work_profile_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/get_puzzle_clear_work_profile_procedure.rs index 8e3921ab4..a394e9e85 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/get_puzzle_clear_work_profile_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/get_puzzle_clear_work_profile_procedure.rs @@ -31,10 +31,10 @@ pub trait get_puzzle_clear_work_profile { input: PuzzleClearWorkGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl get_puzzle_clear_work_profile for super::RemoteProcedures { input: PuzzleClearWorkGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, PuzzleClearWorkProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/get_puzzle_gallery_detail_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/get_puzzle_gallery_detail_procedure.rs index a1471eb32..85b700817 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/get_puzzle_gallery_detail_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/get_puzzle_gallery_detail_procedure.rs @@ -31,10 +31,10 @@ pub trait get_puzzle_gallery_detail { input: PuzzleWorkGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl get_puzzle_gallery_detail for super::RemoteProcedures { input: PuzzleWorkGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, PuzzleWorkProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/get_puzzle_run_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/get_puzzle_run_procedure.rs index 2db5ab66a..d09fc2854 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/get_puzzle_run_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/get_puzzle_run_procedure.rs @@ -31,10 +31,10 @@ pub trait get_puzzle_run { input: PuzzleRunGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl get_puzzle_run for super::RemoteProcedures { input: PuzzleRunGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, PuzzleRunProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/get_puzzle_work_detail_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/get_puzzle_work_detail_procedure.rs index d36c74171..0d6c4f703 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/get_puzzle_work_detail_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/get_puzzle_work_detail_procedure.rs @@ -31,10 +31,10 @@ pub trait get_puzzle_work_detail { input: PuzzleWorkGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl get_puzzle_work_detail for super::RemoteProcedures { input: PuzzleWorkGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, PuzzleWorkProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/get_recent_editor_project_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/get_recent_editor_project_and_return_procedure.rs index b16395853..ea9b9720c 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/get_recent_editor_project_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/get_recent_editor_project_and_return_procedure.rs @@ -31,10 +31,10 @@ pub trait get_recent_editor_project_and_return { input: EditorProjectGetRecentInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl get_recent_editor_project_and_return for super::RemoteProcedures { input: EditorProjectGetRecentInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, EditorProjectProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/get_runtime_inventory_state_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/get_runtime_inventory_state_procedure.rs index abbf4f20a..c8dfefacb 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/get_runtime_inventory_state_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/get_runtime_inventory_state_procedure.rs @@ -31,10 +31,10 @@ pub trait get_runtime_inventory_state { input: RuntimeInventoryStateQueryInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl get_runtime_inventory_state for super::RemoteProcedures { input: RuntimeInventoryStateQueryInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, RuntimeInventoryStateProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/get_runtime_setting_or_default_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/get_runtime_setting_or_default_procedure.rs index 261caed19..4ca8b03ea 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/get_runtime_setting_or_default_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/get_runtime_setting_or_default_procedure.rs @@ -31,10 +31,10 @@ pub trait get_runtime_setting_or_default { input: RuntimeSettingGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl get_runtime_setting_or_default for super::RemoteProcedures { input: RuntimeSettingGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, RuntimeSettingProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/get_runtime_snapshot_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/get_runtime_snapshot_procedure.rs index 989fa40e0..7f9feb4f8 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/get_runtime_snapshot_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/get_runtime_snapshot_procedure.rs @@ -31,10 +31,10 @@ pub trait get_runtime_snapshot { input: RuntimeSnapshotGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl get_runtime_snapshot for super::RemoteProcedures { input: RuntimeSnapshotGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, RuntimeSnapshotProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/get_square_hole_agent_session_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/get_square_hole_agent_session_procedure.rs index 46a172805..1db6459e7 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/get_square_hole_agent_session_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/get_square_hole_agent_session_procedure.rs @@ -31,10 +31,10 @@ pub trait get_square_hole_agent_session { input: SquareHoleAgentSessionGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl get_square_hole_agent_session for super::RemoteProcedures { input: SquareHoleAgentSessionGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, SquareHoleAgentSessionProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/get_square_hole_run_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/get_square_hole_run_procedure.rs index 6dabdb923..5082e7905 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/get_square_hole_run_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/get_square_hole_run_procedure.rs @@ -31,10 +31,10 @@ pub trait get_square_hole_run { input: SquareHoleRunGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl get_square_hole_run for super::RemoteProcedures { input: SquareHoleRunGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, SquareHoleRunProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/get_square_hole_work_detail_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/get_square_hole_work_detail_procedure.rs index 78812cf70..67a16a079 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/get_square_hole_work_detail_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/get_square_hole_work_detail_procedure.rs @@ -31,10 +31,10 @@ pub trait get_square_hole_work_detail { input: SquareHoleWorkGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl get_square_hole_work_detail for super::RemoteProcedures { input: SquareHoleWorkGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, SquareHoleWorkProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/get_story_session_state_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/get_story_session_state_procedure.rs index 7e566dc98..44b48ada6 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/get_story_session_state_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/get_story_session_state_procedure.rs @@ -31,10 +31,10 @@ pub trait get_story_session_state { input: StorySessionStateInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl get_story_session_state for super::RemoteProcedures { input: StorySessionStateInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, StorySessionStateProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/get_visual_novel_agent_session_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/get_visual_novel_agent_session_procedure.rs index 7b50fd298..a4b4b6d1a 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/get_visual_novel_agent_session_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/get_visual_novel_agent_session_procedure.rs @@ -31,10 +31,10 @@ pub trait get_visual_novel_agent_session { input: VisualNovelAgentSessionGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl get_visual_novel_agent_session for super::RemoteProcedures { input: VisualNovelAgentSessionGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, VisualNovelAgentSessionProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/get_visual_novel_run_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/get_visual_novel_run_procedure.rs index 702737fdc..86bdff381 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/get_visual_novel_run_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/get_visual_novel_run_procedure.rs @@ -31,10 +31,10 @@ pub trait get_visual_novel_run { input: VisualNovelRunGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl get_visual_novel_run for super::RemoteProcedures { input: VisualNovelRunGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, VisualNovelRunProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/get_visual_novel_work_detail_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/get_visual_novel_work_detail_procedure.rs index 373121fcc..64864f299 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/get_visual_novel_work_detail_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/get_visual_novel_work_detail_procedure.rs @@ -31,10 +31,10 @@ pub trait get_visual_novel_work_detail { input: VisualNovelWorkGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl get_visual_novel_work_detail for super::RemoteProcedures { input: VisualNovelWorkGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, VisualNovelWorkProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/get_wooden_fish_agent_session_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/get_wooden_fish_agent_session_procedure.rs index 8d1983530..e0b80d0e3 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/get_wooden_fish_agent_session_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/get_wooden_fish_agent_session_procedure.rs @@ -31,10 +31,10 @@ pub trait get_wooden_fish_agent_session { input: WoodenFishAgentSessionGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl get_wooden_fish_agent_session for super::RemoteProcedures { input: WoodenFishAgentSessionGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, WoodenFishAgentSessionProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/get_wooden_fish_run_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/get_wooden_fish_run_procedure.rs index bb381e482..8a0e145a5 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/get_wooden_fish_run_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/get_wooden_fish_run_procedure.rs @@ -31,10 +31,10 @@ pub trait get_wooden_fish_run { input: WoodenFishRunGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl get_wooden_fish_run for super::RemoteProcedures { input: WoodenFishRunGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, WoodenFishRunProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/get_wooden_fish_work_profile_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/get_wooden_fish_work_profile_procedure.rs index 1621290a7..44f67362d 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/get_wooden_fish_work_profile_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/get_wooden_fish_work_profile_procedure.rs @@ -31,10 +31,10 @@ pub trait get_wooden_fish_work_profile { input: WoodenFishWorkGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl get_wooden_fish_work_profile for super::RemoteProcedures { input: WoodenFishWorkGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, WoodenFishWorkProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/grant_new_user_registration_wallet_reward_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/grant_new_user_registration_wallet_reward_procedure.rs index c1d7b6dea..71e481514 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/grant_new_user_registration_wallet_reward_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/grant_new_user_registration_wallet_reward_procedure.rs @@ -31,10 +31,10 @@ pub trait grant_new_user_registration_wallet_reward { input: RuntimeProfileDashboardGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl grant_new_user_registration_wallet_reward for super::RemoteProcedures { input: RuntimeProfileDashboardGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, RuntimeProfileWalletAdjustmentProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/grant_player_progression_experience_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/grant_player_progression_experience_and_return_procedure.rs index 4c67da630..a3f2aa9e4 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/grant_player_progression_experience_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/grant_player_progression_experience_and_return_procedure.rs @@ -31,10 +31,10 @@ pub trait grant_player_progression_experience_and_return { input: PlayerProgressionGrantInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl grant_player_progression_experience_and_return for super::RemoteProcedures input: PlayerProgressionGrantInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, PlayerProgressionProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/grant_player_progression_experience_reducer.rs b/server-rs/crates/spacetime-client/src/module_bindings/grant_player_progression_experience_reducer.rs index 83b48cf76..bd07115eb 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/grant_player_progression_experience_reducer.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/grant_player_progression_experience_reducer.rs @@ -50,9 +50,11 @@ pub trait grant_player_progression_experience { &self, input: PlayerProgressionGrantInput, - callback: impl FnOnce(&super::ReducerEventContext, Result, __sdk::InternalError>) - + Send - + 'static, + callback: impl FnOnce( + &super::ReducerEventContext, + Result, __sdk::InternalError>, + ) + Send + + 'static, ) -> __sdk::Result<()>; } @@ -61,9 +63,11 @@ impl grant_player_progression_experience for super::RemoteReducers { &self, input: PlayerProgressionGrantInput, - callback: impl FnOnce(&super::ReducerEventContext, Result, __sdk::InternalError>) - + Send - + 'static, + callback: impl FnOnce( + &super::ReducerEventContext, + Result, __sdk::InternalError>, + ) + Send + + 'static, ) -> __sdk::Result<()> { self.imp .invoke_reducer_with_callback(GrantPlayerProgressionExperienceArgs { input }, callback) diff --git a/server-rs/crates/spacetime-client/src/module_bindings/import_database_migration_from_chunks_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/import_database_migration_from_chunks_procedure.rs index 731574800..080dda548 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/import_database_migration_from_chunks_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/import_database_migration_from_chunks_procedure.rs @@ -31,10 +31,10 @@ pub trait import_database_migration_from_chunks { input: DatabaseMigrationImportChunksInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl import_database_migration_from_chunks for super::RemoteProcedures { input: DatabaseMigrationImportChunksInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, DatabaseMigrationProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/import_database_migration_from_file_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/import_database_migration_from_file_procedure.rs index 7b2322ee5..2ce4ee2ad 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/import_database_migration_from_file_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/import_database_migration_from_file_procedure.rs @@ -31,10 +31,10 @@ pub trait import_database_migration_from_file { input: DatabaseMigrationImportInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl import_database_migration_from_file for super::RemoteProcedures { input: DatabaseMigrationImportInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, DatabaseMigrationProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/import_database_migration_incremental_from_chunks_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/import_database_migration_incremental_from_chunks_procedure.rs index 51ff565c0..bbe493578 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/import_database_migration_incremental_from_chunks_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/import_database_migration_incremental_from_chunks_procedure.rs @@ -34,10 +34,10 @@ pub trait import_database_migration_incremental_from_chunks { input: DatabaseMigrationImportChunksInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -47,10 +47,10 @@ impl import_database_migration_incremental_from_chunks for super::RemoteProcedur input: DatabaseMigrationImportChunksInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, DatabaseMigrationProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/import_database_migration_incremental_from_file_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/import_database_migration_incremental_from_file_procedure.rs index 2fc318044..f911c87f8 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/import_database_migration_incremental_from_file_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/import_database_migration_incremental_from_file_procedure.rs @@ -31,10 +31,10 @@ pub trait import_database_migration_incremental_from_file { input: DatabaseMigrationImportInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl import_database_migration_incremental_from_file for super::RemoteProcedures input: DatabaseMigrationImportInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, DatabaseMigrationProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/jump_hop_jump_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/jump_hop_jump_procedure.rs index 19cfbec94..1535f96f7 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/jump_hop_jump_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/jump_hop_jump_procedure.rs @@ -31,10 +31,10 @@ pub trait jump_hop_jump { input: JumpHopRunJumpInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl jump_hop_jump for super::RemoteProcedures { input: JumpHopRunJumpInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, JumpHopRunProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/list_asset_history_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/list_asset_history_and_return_procedure.rs index bcc2a742c..ea689b101 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/list_asset_history_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/list_asset_history_and_return_procedure.rs @@ -31,10 +31,10 @@ pub trait list_asset_history_and_return { input: AssetHistoryListInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl list_asset_history_and_return for super::RemoteProcedures { input: AssetHistoryListInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, AssetHistoryListResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/list_big_fish_works_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/list_big_fish_works_procedure.rs index 8e4c21ba6..45ba04afd 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/list_big_fish_works_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/list_big_fish_works_procedure.rs @@ -31,10 +31,10 @@ pub trait list_big_fish_works { input: BigFishWorksListInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl list_big_fish_works for super::RemoteProcedures { input: BigFishWorksListInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, BigFishWorksProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/list_custom_world_gallery_entries_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/list_custom_world_gallery_entries_procedure.rs index 63ee059f5..01f6cb0ce 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/list_custom_world_gallery_entries_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/list_custom_world_gallery_entries_procedure.rs @@ -27,10 +27,10 @@ pub trait list_custom_world_gallery_entries { &self, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -39,10 +39,10 @@ impl list_custom_world_gallery_entries for super::RemoteProcedures { &self, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, CustomWorldGalleryListResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/list_custom_world_profiles_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/list_custom_world_profiles_procedure.rs index f8834945d..c42ce2c6f 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/list_custom_world_profiles_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/list_custom_world_profiles_procedure.rs @@ -31,10 +31,10 @@ pub trait list_custom_world_profiles { input: CustomWorldProfileListInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl list_custom_world_profiles for super::RemoteProcedures { input: CustomWorldProfileListInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, CustomWorldProfileListResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/list_custom_world_works_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/list_custom_world_works_procedure.rs index d469f660c..77f48ba6f 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/list_custom_world_works_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/list_custom_world_works_procedure.rs @@ -31,10 +31,10 @@ pub trait list_custom_world_works { input: CustomWorldWorksListInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl list_custom_world_works for super::RemoteProcedures { input: CustomWorldWorksListInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, CustomWorldWorksListResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/list_editor_projects_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/list_editor_projects_and_return_procedure.rs index fca9595d0..c0181cff2 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/list_editor_projects_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/list_editor_projects_and_return_procedure.rs @@ -31,10 +31,10 @@ pub trait list_editor_projects_and_return { input: EditorProjectListInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl list_editor_projects_and_return for super::RemoteProcedures { input: EditorProjectListInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, EditorProjectListProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/list_external_api_keys_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/list_external_api_keys_and_return_procedure.rs index ca827a562..d0ab651fb 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/list_external_api_keys_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/list_external_api_keys_and_return_procedure.rs @@ -31,10 +31,10 @@ pub trait list_external_api_keys_and_return { input: ExternalApiKeyListInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl list_external_api_keys_and_return for super::RemoteProcedures { input: ExternalApiKeyListInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, ExternalApiKeyProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/list_external_generation_jobs_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/list_external_generation_jobs_and_return_procedure.rs index 05f3b53ef..5164ba9c7 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/list_external_generation_jobs_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/list_external_generation_jobs_and_return_procedure.rs @@ -31,10 +31,10 @@ pub trait list_external_generation_jobs_and_return { input: ExternalGenerationJobListInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl list_external_generation_jobs_and_return for super::RemoteProcedures { input: ExternalGenerationJobListInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, ExternalGenerationJobProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/list_jump_hop_works_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/list_jump_hop_works_procedure.rs index 96d931c3e..18b5cce57 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/list_jump_hop_works_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/list_jump_hop_works_procedure.rs @@ -31,10 +31,10 @@ pub trait list_jump_hop_works { input: JumpHopWorksListInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl list_jump_hop_works for super::RemoteProcedures { input: JumpHopWorksListInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, JumpHopWorksProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/list_match_3_d_works_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/list_match_3_d_works_procedure.rs index b1477034e..c593e8485 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/list_match_3_d_works_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/list_match_3_d_works_procedure.rs @@ -31,10 +31,10 @@ pub trait list_match_3_d_works { input: Match3DWorksListInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl list_match_3_d_works for super::RemoteProcedures { input: Match3DWorksListInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, Match3DWorksProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/list_platform_browse_history_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/list_platform_browse_history_procedure.rs index 0d368a995..001766567 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/list_platform_browse_history_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/list_platform_browse_history_procedure.rs @@ -31,10 +31,10 @@ pub trait list_platform_browse_history { input: RuntimeBrowseHistoryListInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl list_platform_browse_history for super::RemoteProcedures { input: RuntimeBrowseHistoryListInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, RuntimeBrowseHistoryProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/list_profile_save_archives_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/list_profile_save_archives_procedure.rs index 31c214bb0..1c7176cf7 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/list_profile_save_archives_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/list_profile_save_archives_procedure.rs @@ -31,10 +31,10 @@ pub trait list_profile_save_archives { input: RuntimeProfileSaveArchiveListInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl list_profile_save_archives for super::RemoteProcedures { input: RuntimeProfileSaveArchiveListInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, RuntimeProfileSaveArchiveProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/list_profile_wallet_ledger_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/list_profile_wallet_ledger_procedure.rs index 23496701a..d51f0df2d 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/list_profile_wallet_ledger_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/list_profile_wallet_ledger_procedure.rs @@ -31,10 +31,10 @@ pub trait list_profile_wallet_ledger { input: RuntimeProfileWalletLedgerListInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl list_profile_wallet_ledger for super::RemoteProcedures { input: RuntimeProfileWalletLedgerListInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, RuntimeProfileWalletLedgerProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/list_public_editor_project_resources_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/list_public_editor_project_resources_and_return_procedure.rs index 70b2895cf..b594fe7ff 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/list_public_editor_project_resources_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/list_public_editor_project_resources_and_return_procedure.rs @@ -34,10 +34,10 @@ pub trait list_public_editor_project_resources_and_return { input: EditorProjectResourcePublicShowcaseListInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -47,10 +47,10 @@ impl list_public_editor_project_resources_and_return for super::RemoteProcedures input: EditorProjectResourcePublicShowcaseListInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, EditorProjectResourceListProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/list_public_editor_showcase_assets_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/list_public_editor_showcase_assets_and_return_procedure.rs index 9e357db4f..b6b5ad8b8 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/list_public_editor_showcase_assets_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/list_public_editor_showcase_assets_and_return_procedure.rs @@ -34,10 +34,10 @@ pub trait list_public_editor_showcase_assets_and_return { input: EditorShowcaseAssetPublicListInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -47,10 +47,10 @@ impl list_public_editor_showcase_assets_and_return for super::RemoteProcedures { input: EditorShowcaseAssetPublicListInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, EditorShowcaseAssetListProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/list_puzzle_clear_works_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/list_puzzle_clear_works_procedure.rs index c57ebfe45..d440e9b8b 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/list_puzzle_clear_works_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/list_puzzle_clear_works_procedure.rs @@ -31,10 +31,10 @@ pub trait list_puzzle_clear_works { input: PuzzleClearWorksListInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl list_puzzle_clear_works for super::RemoteProcedures { input: PuzzleClearWorksListInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, PuzzleClearWorksProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/list_puzzle_gallery_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/list_puzzle_gallery_procedure.rs index 553b8e087..e62fd064b 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/list_puzzle_gallery_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/list_puzzle_gallery_procedure.rs @@ -27,10 +27,10 @@ pub trait list_puzzle_gallery { &self, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -39,10 +39,10 @@ impl list_puzzle_gallery for super::RemoteProcedures { &self, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, PuzzleWorksProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/list_puzzle_works_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/list_puzzle_works_procedure.rs index 844d16dfe..1da004e91 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/list_puzzle_works_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/list_puzzle_works_procedure.rs @@ -31,10 +31,10 @@ pub trait list_puzzle_works { input: PuzzleWorksListInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl list_puzzle_works for super::RemoteProcedures { input: PuzzleWorksListInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, PuzzleWorksProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/list_square_hole_works_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/list_square_hole_works_procedure.rs index 0052c502c..1c706a8cb 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/list_square_hole_works_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/list_square_hole_works_procedure.rs @@ -31,10 +31,10 @@ pub trait list_square_hole_works { input: SquareHoleWorksListInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl list_square_hole_works for super::RemoteProcedures { input: SquareHoleWorksListInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, SquareHoleWorksProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/list_visual_novel_runtime_history_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/list_visual_novel_runtime_history_procedure.rs index 680a8455c..fdc06a222 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/list_visual_novel_runtime_history_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/list_visual_novel_runtime_history_procedure.rs @@ -31,10 +31,10 @@ pub trait list_visual_novel_runtime_history { input: VisualNovelRuntimeHistoryListInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl list_visual_novel_runtime_history for super::RemoteProcedures { input: VisualNovelRuntimeHistoryListInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, VisualNovelHistoryProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/list_visual_novel_works_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/list_visual_novel_works_procedure.rs index be9b9a294..1920ee797 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/list_visual_novel_works_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/list_visual_novel_works_procedure.rs @@ -31,10 +31,10 @@ pub trait list_visual_novel_works { input: VisualNovelWorksListInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl list_visual_novel_works for super::RemoteProcedures { input: VisualNovelWorksListInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, VisualNovelWorksProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/list_wooden_fish_works_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/list_wooden_fish_works_procedure.rs index 87695a8e7..d449ff80d 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/list_wooden_fish_works_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/list_wooden_fish_works_procedure.rs @@ -31,10 +31,10 @@ pub trait list_wooden_fish_works { input: WoodenFishWorksListInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl list_wooden_fish_works for super::RemoteProcedures { input: WoodenFishWorksListInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, WoodenFishWorksProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/mark_editor_showcase_asset_refunded_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/mark_editor_showcase_asset_refunded_and_return_procedure.rs index 2da58f2ca..a2d7ad962 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/mark_editor_showcase_asset_refunded_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/mark_editor_showcase_asset_refunded_and_return_procedure.rs @@ -34,10 +34,10 @@ pub trait mark_editor_showcase_asset_refunded_and_return { input: EditorShowcaseAssetRefundMarkInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -47,10 +47,10 @@ impl mark_editor_showcase_asset_refunded_and_return for super::RemoteProcedures input: EditorShowcaseAssetRefundMarkInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, EditorShowcaseAssetProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/mark_profile_recharge_order_paid_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/mark_profile_recharge_order_paid_and_return_procedure.rs index 09ba81c70..f412f184a 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/mark_profile_recharge_order_paid_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/mark_profile_recharge_order_paid_and_return_procedure.rs @@ -34,10 +34,10 @@ pub trait mark_profile_recharge_order_paid_and_return { input: RuntimeProfileRechargeOrderPaidInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -47,10 +47,10 @@ impl mark_profile_recharge_order_paid_and_return for super::RemoteProcedures { input: RuntimeProfileRechargeOrderPaidInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, RuntimeProfileRechargeCenterProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/mark_puzzle_clear_level_time_up_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/mark_puzzle_clear_level_time_up_procedure.rs index 97042b075..99280a6ba 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/mark_puzzle_clear_level_time_up_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/mark_puzzle_clear_level_time_up_procedure.rs @@ -31,10 +31,10 @@ pub trait mark_puzzle_clear_level_time_up { input: PuzzleClearRunTimeUpInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl mark_puzzle_clear_level_time_up for super::RemoteProcedures { input: PuzzleClearRunTimeUpInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, PuzzleClearRunProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/mark_puzzle_draft_generation_failed_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/mark_puzzle_draft_generation_failed_procedure.rs index 954b7ddc0..ae073d5cb 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/mark_puzzle_draft_generation_failed_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/mark_puzzle_draft_generation_failed_procedure.rs @@ -31,10 +31,10 @@ pub trait mark_puzzle_draft_generation_failed { input: PuzzleDraftCompileFailureInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl mark_puzzle_draft_generation_failed for super::RemoteProcedures { input: PuzzleDraftCompileFailureInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, PuzzleAgentSessionProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/mark_puzzle_level_generation_failed_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/mark_puzzle_level_generation_failed_procedure.rs index 1906e8d89..51d799900 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/mark_puzzle_level_generation_failed_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/mark_puzzle_level_generation_failed_procedure.rs @@ -31,10 +31,10 @@ pub trait mark_puzzle_level_generation_failed { input: PuzzleLevelGenerationFailureInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl mark_puzzle_level_generation_failed for super::RemoteProcedures { input: PuzzleLevelGenerationFailureInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, PuzzleAgentSessionProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/profile_recharge_order_expiration_schedule_table.rs b/server-rs/crates/spacetime-client/src/module_bindings/profile_recharge_order_expiration_schedule_table.rs new file mode 100644 index 000000000..2c0a4da54 --- /dev/null +++ b/server-rs/crates/spacetime-client/src/module_bindings/profile_recharge_order_expiration_schedule_table.rs @@ -0,0 +1,182 @@ +// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE +// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD. + +#![allow(unused, clippy::all)] +use super::profile_recharge_order_expiration_schedule_type::ProfileRechargeOrderExpirationSchedule; +use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws}; + +/// Table handle for the table `profile_recharge_order_expiration_schedule`. +/// +/// Obtain a handle from the [`ProfileRechargeOrderExpirationScheduleTableAccess::profile_recharge_order_expiration_schedule`] method on [`super::RemoteTables`], +/// like `ctx.db.profile_recharge_order_expiration_schedule()`. +/// +/// Users are encouraged not to explicitly reference this type, +/// but to directly chain method calls, +/// like `ctx.db.profile_recharge_order_expiration_schedule().on_insert(...)`. +pub struct ProfileRechargeOrderExpirationScheduleTableHandle<'ctx> { + imp: __sdk::TableHandle, + ctx: std::marker::PhantomData<&'ctx super::RemoteTables>, +} + +#[allow(non_camel_case_types)] +/// Extension trait for access to the table `profile_recharge_order_expiration_schedule`. +/// +/// Implemented for [`super::RemoteTables`]. +pub trait ProfileRechargeOrderExpirationScheduleTableAccess { + #[allow(non_snake_case)] + /// Obtain a [`ProfileRechargeOrderExpirationScheduleTableHandle`], which mediates access to the table `profile_recharge_order_expiration_schedule`. + fn profile_recharge_order_expiration_schedule( + &self, + ) -> ProfileRechargeOrderExpirationScheduleTableHandle<'_>; +} + +impl ProfileRechargeOrderExpirationScheduleTableAccess for super::RemoteTables { + fn profile_recharge_order_expiration_schedule( + &self, + ) -> ProfileRechargeOrderExpirationScheduleTableHandle<'_> { + ProfileRechargeOrderExpirationScheduleTableHandle { + imp: self + .imp + .get_table::( + "profile_recharge_order_expiration_schedule", + ), + ctx: std::marker::PhantomData, + } + } +} + +pub struct ProfileRechargeOrderExpirationScheduleInsertCallbackId(__sdk::CallbackId); +pub struct ProfileRechargeOrderExpirationScheduleDeleteCallbackId(__sdk::CallbackId); + +impl<'ctx> __sdk::Table for ProfileRechargeOrderExpirationScheduleTableHandle<'ctx> { + type Row = ProfileRechargeOrderExpirationSchedule; + type EventContext = super::EventContext; + + fn count(&self) -> u64 { + self.imp.count() + } + fn iter(&self) -> impl Iterator + '_ { + self.imp.iter() + } + + type InsertCallbackId = ProfileRechargeOrderExpirationScheduleInsertCallbackId; + + fn on_insert( + &self, + callback: impl FnMut(&Self::EventContext, &Self::Row) + Send + 'static, + ) -> ProfileRechargeOrderExpirationScheduleInsertCallbackId { + ProfileRechargeOrderExpirationScheduleInsertCallbackId( + self.imp.on_insert(Box::new(callback)), + ) + } + + fn remove_on_insert(&self, callback: ProfileRechargeOrderExpirationScheduleInsertCallbackId) { + self.imp.remove_on_insert(callback.0) + } + + type DeleteCallbackId = ProfileRechargeOrderExpirationScheduleDeleteCallbackId; + + fn on_delete( + &self, + callback: impl FnMut(&Self::EventContext, &Self::Row) + Send + 'static, + ) -> ProfileRechargeOrderExpirationScheduleDeleteCallbackId { + ProfileRechargeOrderExpirationScheduleDeleteCallbackId( + self.imp.on_delete(Box::new(callback)), + ) + } + + fn remove_on_delete(&self, callback: ProfileRechargeOrderExpirationScheduleDeleteCallbackId) { + self.imp.remove_on_delete(callback.0) + } +} + +pub struct ProfileRechargeOrderExpirationScheduleUpdateCallbackId(__sdk::CallbackId); + +impl<'ctx> __sdk::TableWithPrimaryKey for ProfileRechargeOrderExpirationScheduleTableHandle<'ctx> { + type UpdateCallbackId = ProfileRechargeOrderExpirationScheduleUpdateCallbackId; + + fn on_update( + &self, + callback: impl FnMut(&Self::EventContext, &Self::Row, &Self::Row) + Send + 'static, + ) -> ProfileRechargeOrderExpirationScheduleUpdateCallbackId { + ProfileRechargeOrderExpirationScheduleUpdateCallbackId( + self.imp.on_update(Box::new(callback)), + ) + } + + fn remove_on_update(&self, callback: ProfileRechargeOrderExpirationScheduleUpdateCallbackId) { + self.imp.remove_on_update(callback.0) + } +} + +/// Access to the `order_id` unique index on the table `profile_recharge_order_expiration_schedule`, +/// which allows point queries on the field of the same name +/// via the [`ProfileRechargeOrderExpirationScheduleOrderIdUnique::find`] method. +/// +/// Users are encouraged not to explicitly reference this type, +/// but to directly chain method calls, +/// like `ctx.db.profile_recharge_order_expiration_schedule().order_id().find(...)`. +pub struct ProfileRechargeOrderExpirationScheduleOrderIdUnique<'ctx> { + imp: __sdk::UniqueConstraintHandle, + phantom: std::marker::PhantomData<&'ctx super::RemoteTables>, +} + +impl<'ctx> ProfileRechargeOrderExpirationScheduleTableHandle<'ctx> { + /// Get a handle on the `order_id` unique index on the table `profile_recharge_order_expiration_schedule`. + pub fn order_id(&self) -> ProfileRechargeOrderExpirationScheduleOrderIdUnique<'ctx> { + ProfileRechargeOrderExpirationScheduleOrderIdUnique { + imp: self.imp.get_unique_constraint::("order_id"), + phantom: std::marker::PhantomData, + } + } +} + +impl<'ctx> ProfileRechargeOrderExpirationScheduleOrderIdUnique<'ctx> { + /// Find the subscribed row whose `order_id` column value is equal to `col_val`, + /// if such a row is present in the client cache. + pub fn find(&self, col_val: &String) -> Option { + self.imp.find(col_val) + } +} + +#[doc(hidden)] +pub(super) fn register_table(client_cache: &mut __sdk::ClientCache) { + let _table = client_cache.get_or_make_table::( + "profile_recharge_order_expiration_schedule", + ); + _table.add_unique_constraint::("order_id", |row| &row.order_id); +} + +#[doc(hidden)] +pub(super) fn parse_table_update( + raw_updates: __ws::v2::TableUpdate, +) -> __sdk::Result<__sdk::TableUpdate> { + __sdk::TableUpdate::parse_table_update(raw_updates).map_err(|e| { + __sdk::InternalError::failed_parse( + "TableUpdate", + "TableUpdate", + ) + .with_cause(e) + .into() + }) +} + +#[allow(non_camel_case_types)] +/// Extension trait for query builder access to the table `ProfileRechargeOrderExpirationSchedule`. +/// +/// Implemented for [`__sdk::QueryTableAccessor`]. +pub trait profile_recharge_order_expiration_scheduleQueryTableAccess { + #[allow(non_snake_case)] + /// Get a query builder for the table `ProfileRechargeOrderExpirationSchedule`. + fn profile_recharge_order_expiration_schedule( + &self, + ) -> __sdk::__query_builder::Table; +} + +impl profile_recharge_order_expiration_scheduleQueryTableAccess for __sdk::QueryTableAccessor { + fn profile_recharge_order_expiration_schedule( + &self, + ) -> __sdk::__query_builder::Table { + __sdk::__query_builder::Table::new("profile_recharge_order_expiration_schedule") + } +} diff --git a/server-rs/crates/spacetime-client/src/module_bindings/profile_recharge_order_expiration_schedule_type.rs b/server-rs/crates/spacetime-client/src/module_bindings/profile_recharge_order_expiration_schedule_type.rs new file mode 100644 index 000000000..e304258d0 --- /dev/null +++ b/server-rs/crates/spacetime-client/src/module_bindings/profile_recharge_order_expiration_schedule_type.rs @@ -0,0 +1,77 @@ +// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE +// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD. + +#![allow(unused, clippy::all)] +use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws}; + +#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)] +#[sats(crate = __lib)] +pub struct ProfileRechargeOrderExpirationSchedule { + pub order_id: String, + pub user_id: String, + pub scheduled_at: __sdk::Timestamp, + pub lease_owner: Option, + pub lease_expires_at: Option<__sdk::Timestamp>, + pub created_at: __sdk::Timestamp, + pub updated_at: __sdk::Timestamp, +} + +impl __sdk::InModule for ProfileRechargeOrderExpirationSchedule { + type Module = super::RemoteModule; +} + +/// Column accessor struct for the table `ProfileRechargeOrderExpirationSchedule`. +/// +/// Provides typed access to columns for query building. +pub struct ProfileRechargeOrderExpirationScheduleCols { + pub order_id: __sdk::__query_builder::Col, + pub user_id: __sdk::__query_builder::Col, + pub scheduled_at: + __sdk::__query_builder::Col, + pub lease_owner: + __sdk::__query_builder::Col>, + pub lease_expires_at: __sdk::__query_builder::Col< + ProfileRechargeOrderExpirationSchedule, + Option<__sdk::Timestamp>, + >, + pub created_at: + __sdk::__query_builder::Col, + pub updated_at: + __sdk::__query_builder::Col, +} + +impl __sdk::__query_builder::HasCols for ProfileRechargeOrderExpirationSchedule { + type Cols = ProfileRechargeOrderExpirationScheduleCols; + fn cols(table_name: &'static str) -> Self::Cols { + ProfileRechargeOrderExpirationScheduleCols { + order_id: __sdk::__query_builder::Col::new(table_name, "order_id"), + user_id: __sdk::__query_builder::Col::new(table_name, "user_id"), + scheduled_at: __sdk::__query_builder::Col::new(table_name, "scheduled_at"), + lease_owner: __sdk::__query_builder::Col::new(table_name, "lease_owner"), + lease_expires_at: __sdk::__query_builder::Col::new(table_name, "lease_expires_at"), + created_at: __sdk::__query_builder::Col::new(table_name, "created_at"), + updated_at: __sdk::__query_builder::Col::new(table_name, "updated_at"), + } + } +} + +/// Indexed column accessor struct for the table `ProfileRechargeOrderExpirationSchedule`. +/// +/// Provides typed access to indexed columns for query building. +pub struct ProfileRechargeOrderExpirationScheduleIxCols { + pub order_id: __sdk::__query_builder::IxCol, + pub scheduled_at: + __sdk::__query_builder::IxCol, +} + +impl __sdk::__query_builder::HasIxCols for ProfileRechargeOrderExpirationSchedule { + type IxCols = ProfileRechargeOrderExpirationScheduleIxCols; + fn ix_cols(table_name: &'static str) -> Self::IxCols { + ProfileRechargeOrderExpirationScheduleIxCols { + order_id: __sdk::__query_builder::IxCol::new(table_name, "order_id"), + scheduled_at: __sdk::__query_builder::IxCol::new(table_name, "scheduled_at"), + } + } +} + +impl __sdk::__query_builder::CanBeLookupTable for ProfileRechargeOrderExpirationSchedule {} diff --git a/server-rs/crates/spacetime-client/src/module_bindings/public_work_play_daily_stat_table.rs b/server-rs/crates/spacetime-client/src/module_bindings/public_work_play_daily_stat_table.rs index 8c95aaa8f..d0c84769d 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/public_work_play_daily_stat_table.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/public_work_play_daily_stat_table.rs @@ -153,7 +153,7 @@ pub trait public_work_play_daily_statQueryTableAccess { #[allow(non_snake_case)] /// Get a query builder for the table `PublicWorkPlayDailyStat`. fn public_work_play_daily_stat(&self) - -> __sdk::__query_builder::Table; + -> __sdk::__query_builder::Table; } impl public_work_play_daily_statQueryTableAccess for __sdk::QueryTableAccessor { diff --git a/server-rs/crates/spacetime-client/src/module_bindings/publish_bark_battle_work_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/publish_bark_battle_work_procedure.rs index 9ea9f0db8..87884f544 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/publish_bark_battle_work_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/publish_bark_battle_work_procedure.rs @@ -31,10 +31,10 @@ pub trait publish_bark_battle_work { input: BarkBattleWorkPublishInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl publish_bark_battle_work for super::RemoteProcedures { input: BarkBattleWorkPublishInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, BarkBattleProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/publish_big_fish_game_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/publish_big_fish_game_procedure.rs index e8007288d..d4507ad82 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/publish_big_fish_game_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/publish_big_fish_game_procedure.rs @@ -31,10 +31,10 @@ pub trait publish_big_fish_game { input: BigFishPublishInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl publish_big_fish_game for super::RemoteProcedures { input: BigFishPublishInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, BigFishSessionProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/publish_custom_world_profile_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/publish_custom_world_profile_and_return_procedure.rs index e5434acad..d57419224 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/publish_custom_world_profile_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/publish_custom_world_profile_and_return_procedure.rs @@ -31,10 +31,10 @@ pub trait publish_custom_world_profile_and_return { input: CustomWorldProfilePublishInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl publish_custom_world_profile_and_return for super::RemoteProcedures { input: CustomWorldProfilePublishInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, CustomWorldLibraryMutationResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/publish_custom_world_profile_reducer.rs b/server-rs/crates/spacetime-client/src/module_bindings/publish_custom_world_profile_reducer.rs index 84e6b339f..2e2f71f65 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/publish_custom_world_profile_reducer.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/publish_custom_world_profile_reducer.rs @@ -50,9 +50,11 @@ pub trait publish_custom_world_profile { &self, input: CustomWorldProfilePublishInput, - callback: impl FnOnce(&super::ReducerEventContext, Result, __sdk::InternalError>) - + Send - + 'static, + callback: impl FnOnce( + &super::ReducerEventContext, + Result, __sdk::InternalError>, + ) + Send + + 'static, ) -> __sdk::Result<()>; } @@ -61,9 +63,11 @@ impl publish_custom_world_profile for super::RemoteReducers { &self, input: CustomWorldProfilePublishInput, - callback: impl FnOnce(&super::ReducerEventContext, Result, __sdk::InternalError>) - + Send - + 'static, + callback: impl FnOnce( + &super::ReducerEventContext, + Result, __sdk::InternalError>, + ) + Send + + 'static, ) -> __sdk::Result<()> { self.imp .invoke_reducer_with_callback(PublishCustomWorldProfileArgs { input }, callback) diff --git a/server-rs/crates/spacetime-client/src/module_bindings/publish_custom_world_world_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/publish_custom_world_world_procedure.rs index 1eb935a23..42c76aad3 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/publish_custom_world_world_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/publish_custom_world_world_procedure.rs @@ -31,10 +31,10 @@ pub trait publish_custom_world_world { input: CustomWorldPublishWorldInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl publish_custom_world_world for super::RemoteProcedures { input: CustomWorldPublishWorldInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, CustomWorldPublishWorldResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/publish_jump_hop_work_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/publish_jump_hop_work_procedure.rs index a87bb2784..926aed9b0 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/publish_jump_hop_work_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/publish_jump_hop_work_procedure.rs @@ -31,10 +31,10 @@ pub trait publish_jump_hop_work { input: JumpHopWorkPublishInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl publish_jump_hop_work for super::RemoteProcedures { input: JumpHopWorkPublishInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, JumpHopWorkProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/publish_match_3_d_work_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/publish_match_3_d_work_procedure.rs index 65bd160e5..db0c7efe7 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/publish_match_3_d_work_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/publish_match_3_d_work_procedure.rs @@ -31,10 +31,10 @@ pub trait publish_match_3_d_work { input: Match3DWorkPublishInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl publish_match_3_d_work for super::RemoteProcedures { input: Match3DWorkPublishInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, Match3DWorkProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/publish_puzzle_clear_work_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/publish_puzzle_clear_work_procedure.rs index c5e2ea820..55b2ca6d7 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/publish_puzzle_clear_work_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/publish_puzzle_clear_work_procedure.rs @@ -31,10 +31,10 @@ pub trait publish_puzzle_clear_work { input: PuzzleClearWorkPublishInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl publish_puzzle_clear_work for super::RemoteProcedures { input: PuzzleClearWorkPublishInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, PuzzleClearWorkProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/publish_puzzle_work_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/publish_puzzle_work_procedure.rs index 288b44a51..932b66d68 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/publish_puzzle_work_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/publish_puzzle_work_procedure.rs @@ -31,10 +31,10 @@ pub trait publish_puzzle_work { input: PuzzlePublishInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl publish_puzzle_work for super::RemoteProcedures { input: PuzzlePublishInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, PuzzleWorkProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/publish_square_hole_work_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/publish_square_hole_work_procedure.rs index f0c2be486..ad4e944ed 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/publish_square_hole_work_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/publish_square_hole_work_procedure.rs @@ -31,10 +31,10 @@ pub trait publish_square_hole_work { input: SquareHoleWorkPublishInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl publish_square_hole_work for super::RemoteProcedures { input: SquareHoleWorkPublishInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, SquareHoleWorkProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/publish_visual_novel_work_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/publish_visual_novel_work_procedure.rs index 7ddf731bc..91c7eabde 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/publish_visual_novel_work_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/publish_visual_novel_work_procedure.rs @@ -31,10 +31,10 @@ pub trait publish_visual_novel_work { input: VisualNovelWorkPublishInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl publish_visual_novel_work for super::RemoteProcedures { input: VisualNovelWorkPublishInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, VisualNovelWorkProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/publish_wooden_fish_work_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/publish_wooden_fish_work_procedure.rs index 5dd6555ce..f370ace6a 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/publish_wooden_fish_work_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/publish_wooden_fish_work_procedure.rs @@ -31,10 +31,10 @@ pub trait publish_wooden_fish_work { input: WoodenFishWorkPublishInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl publish_wooden_fish_work for super::RemoteProcedures { input: WoodenFishWorkPublishInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, WoodenFishWorkProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/put_database_migration_import_chunk_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/put_database_migration_import_chunk_procedure.rs index 597b25119..f3776bfdc 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/put_database_migration_import_chunk_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/put_database_migration_import_chunk_procedure.rs @@ -31,10 +31,10 @@ pub trait put_database_migration_import_chunk { input: DatabaseMigrationImportChunkInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl put_database_migration_import_chunk for super::RemoteProcedures { input: DatabaseMigrationImportChunkInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, DatabaseMigrationProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/puzzle_clear_gallery_view_table.rs b/server-rs/crates/spacetime-client/src/module_bindings/puzzle_clear_gallery_view_table.rs index a5999e301..f41b3c6b4 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/puzzle_clear_gallery_view_table.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/puzzle_clear_gallery_view_table.rs @@ -108,7 +108,7 @@ pub trait puzzle_clear_gallery_viewQueryTableAccess { #[allow(non_snake_case)] /// Get a query builder for the table `PuzzleClearGalleryViewRow`. fn puzzle_clear_gallery_view(&self) - -> __sdk::__query_builder::Table; + -> __sdk::__query_builder::Table; } impl puzzle_clear_gallery_viewQueryTableAccess for __sdk::QueryTableAccessor { diff --git a/server-rs/crates/spacetime-client/src/module_bindings/puzzle_clear_work_profile_table.rs b/server-rs/crates/spacetime-client/src/module_bindings/puzzle_clear_work_profile_table.rs index 412795e70..5baf33163 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/puzzle_clear_work_profile_table.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/puzzle_clear_work_profile_table.rs @@ -153,7 +153,7 @@ pub trait puzzle_clear_work_profileQueryTableAccess { #[allow(non_snake_case)] /// Get a query builder for the table `PuzzleClearWorkProfileRow`. fn puzzle_clear_work_profile(&self) - -> __sdk::__query_builder::Table; + -> __sdk::__query_builder::Table; } impl puzzle_clear_work_profileQueryTableAccess for __sdk::QueryTableAccessor { diff --git a/server-rs/crates/spacetime-client/src/module_bindings/query_analytics_metric_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/query_analytics_metric_procedure.rs index adc25bfaf..7973f5469 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/query_analytics_metric_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/query_analytics_metric_procedure.rs @@ -31,10 +31,10 @@ pub trait query_analytics_metric { input: AnalyticsMetricQueryInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl query_analytics_metric for super::RemoteProcedures { input: AnalyticsMetricQueryInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, AnalyticsMetricQueryProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/record_big_fish_like_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/record_big_fish_like_procedure.rs index 0429a9f71..536aa47d2 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/record_big_fish_like_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/record_big_fish_like_procedure.rs @@ -31,10 +31,10 @@ pub trait record_big_fish_like { input: BigFishWorkLikeRecordInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl record_big_fish_like for super::RemoteProcedures { input: BigFishWorkLikeRecordInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, BigFishWorksProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/record_big_fish_play_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/record_big_fish_play_procedure.rs index f4cfaa6b0..8cf35b2b1 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/record_big_fish_play_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/record_big_fish_play_procedure.rs @@ -31,10 +31,10 @@ pub trait record_big_fish_play { input: BigFishPlayRecordInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl record_big_fish_play for super::RemoteProcedures { input: BigFishPlayRecordInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, BigFishWorksProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/record_custom_world_profile_like_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/record_custom_world_profile_like_procedure.rs index 6ac81dd96..1cd0aaad9 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/record_custom_world_profile_like_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/record_custom_world_profile_like_procedure.rs @@ -31,10 +31,10 @@ pub trait record_custom_world_profile_like { input: CustomWorldProfileLikeRecordInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl record_custom_world_profile_like for super::RemoteProcedures { input: CustomWorldProfileLikeRecordInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, CustomWorldLibraryMutationResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/record_custom_world_profile_play_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/record_custom_world_profile_play_procedure.rs index f803e277e..2534ee30d 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/record_custom_world_profile_play_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/record_custom_world_profile_play_procedure.rs @@ -31,10 +31,10 @@ pub trait record_custom_world_profile_play { input: CustomWorldProfilePlayRecordInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl record_custom_world_profile_play for super::RemoteProcedures { input: CustomWorldProfilePlayRecordInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, CustomWorldLibraryMutationResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/record_daily_login_tracking_event_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/record_daily_login_tracking_event_and_return_procedure.rs index 9365d3359..c131f3bab 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/record_daily_login_tracking_event_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/record_daily_login_tracking_event_and_return_procedure.rs @@ -34,10 +34,10 @@ pub trait record_daily_login_tracking_event_and_return { input: RuntimeProfileTaskCenterGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -47,10 +47,10 @@ impl record_daily_login_tracking_event_and_return for super::RemoteProcedures { input: RuntimeProfileTaskCenterGetInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, RuntimeTrackingEventProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/record_puzzle_work_like_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/record_puzzle_work_like_procedure.rs index 78dce7f84..fa55cf09d 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/record_puzzle_work_like_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/record_puzzle_work_like_procedure.rs @@ -31,10 +31,10 @@ pub trait record_puzzle_work_like { input: PuzzleWorkLikeRecordInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl record_puzzle_work_like for super::RemoteProcedures { input: PuzzleWorkLikeRecordInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, PuzzleWorkProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/record_tracking_event_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/record_tracking_event_and_return_procedure.rs index 01361ec79..c09132c01 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/record_tracking_event_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/record_tracking_event_and_return_procedure.rs @@ -31,10 +31,10 @@ pub trait record_tracking_event_and_return { input: RuntimeTrackingEventInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl record_tracking_event_and_return for super::RemoteProcedures { input: RuntimeTrackingEventInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, RuntimeTrackingEventProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/record_tracking_events_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/record_tracking_events_and_return_procedure.rs index ba28d1a80..428e378f6 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/record_tracking_events_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/record_tracking_events_and_return_procedure.rs @@ -31,10 +31,10 @@ pub trait record_tracking_events_and_return { inputs: Vec, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl record_tracking_events_and_return for super::RemoteProcedures { inputs: Vec, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, RuntimeTrackingEventBatchProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/record_visual_novel_runtime_event_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/record_visual_novel_runtime_event_procedure.rs index 8c8db759f..39f3a4319 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/record_visual_novel_runtime_event_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/record_visual_novel_runtime_event_procedure.rs @@ -31,10 +31,10 @@ pub trait record_visual_novel_runtime_event { input: VisualNovelRuntimeEventRecordInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl record_visual_novel_runtime_event for super::RemoteProcedures { input: VisualNovelRuntimeEventRecordInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, VisualNovelRuntimeEventProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/redeem_profile_referral_invite_code_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/redeem_profile_referral_invite_code_procedure.rs index 44354acdf..efebd26a0 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/redeem_profile_referral_invite_code_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/redeem_profile_referral_invite_code_procedure.rs @@ -31,10 +31,10 @@ pub trait redeem_profile_referral_invite_code { input: RuntimeReferralRedeemInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl redeem_profile_referral_invite_code for super::RemoteProcedures { input: RuntimeReferralRedeemInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, RuntimeReferralRedeemProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/redeem_profile_reward_code_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/redeem_profile_reward_code_procedure.rs index 4d048a49b..38fc64f51 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/redeem_profile_reward_code_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/redeem_profile_reward_code_procedure.rs @@ -31,10 +31,10 @@ pub trait redeem_profile_reward_code { input: RuntimeProfileRewardCodeRedeemInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl redeem_profile_reward_code for super::RemoteProcedures { input: RuntimeProfileRewardCodeRedeemInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, RuntimeProfileRewardCodeRedeemProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/refund_profile_wallet_points_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/refund_profile_wallet_points_and_return_procedure.rs index fb86172c0..a4bbd3787 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/refund_profile_wallet_points_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/refund_profile_wallet_points_and_return_procedure.rs @@ -31,10 +31,10 @@ pub trait refund_profile_wallet_points_and_return { input: RuntimeProfileWalletAdjustmentInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl refund_profile_wallet_points_and_return for super::RemoteProcedures { input: RuntimeProfileWalletAdjustmentInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, RuntimeProfileWalletAdjustmentProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/release_puzzle_background_compile_task_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/release_puzzle_background_compile_task_procedure.rs index 3b85afae8..983069d66 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/release_puzzle_background_compile_task_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/release_puzzle_background_compile_task_procedure.rs @@ -34,10 +34,10 @@ pub trait release_puzzle_background_compile_task { input: PuzzleBackgroundCompileTaskReleaseInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -47,10 +47,10 @@ impl release_puzzle_background_compile_task for super::RemoteProcedures { input: PuzzleBackgroundCompileTaskReleaseInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, PuzzleBackgroundCompileTaskProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/remix_big_fish_work_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/remix_big_fish_work_procedure.rs index 7f58adb35..ff7d14869 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/remix_big_fish_work_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/remix_big_fish_work_procedure.rs @@ -31,10 +31,10 @@ pub trait remix_big_fish_work { input: BigFishWorkRemixInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl remix_big_fish_work for super::RemoteProcedures { input: BigFishWorkRemixInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, BigFishSessionProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/remix_custom_world_profile_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/remix_custom_world_profile_procedure.rs index 93f743837..8cd29b12f 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/remix_custom_world_profile_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/remix_custom_world_profile_procedure.rs @@ -31,10 +31,10 @@ pub trait remix_custom_world_profile { input: CustomWorldProfileRemixInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl remix_custom_world_profile for super::RemoteProcedures { input: CustomWorldProfileRemixInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, CustomWorldLibraryMutationResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/remix_puzzle_work_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/remix_puzzle_work_procedure.rs index da91b3345..d25480694 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/remix_puzzle_work_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/remix_puzzle_work_procedure.rs @@ -31,10 +31,10 @@ pub trait remix_puzzle_work { input: PuzzleWorkRemixInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl remix_puzzle_work for super::RemoteProcedures { input: PuzzleWorkRemixInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, PuzzleAgentSessionProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/rename_editor_project_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/rename_editor_project_and_return_procedure.rs index 408122981..923337242 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/rename_editor_project_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/rename_editor_project_and_return_procedure.rs @@ -31,10 +31,10 @@ pub trait rename_editor_project_and_return { input: EditorProjectRenameInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl rename_editor_project_and_return for super::RemoteProcedures { input: EditorProjectRenameInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, EditorProjectProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/renew_external_generation_job_lease_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/renew_external_generation_job_lease_and_return_procedure.rs index 4cbd45fc1..0b31241b0 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/renew_external_generation_job_lease_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/renew_external_generation_job_lease_and_return_procedure.rs @@ -34,10 +34,10 @@ pub trait renew_external_generation_job_lease_and_return { input: ExternalGenerationJobRenewLeaseInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -47,10 +47,10 @@ impl renew_external_generation_job_lease_and_return for super::RemoteProcedures input: ExternalGenerationJobRenewLeaseInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, ExternalGenerationJobProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/repair_editor_asset_media_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/repair_editor_asset_media_and_return_procedure.rs index 1b035028b..63499dde6 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/repair_editor_asset_media_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/repair_editor_asset_media_and_return_procedure.rs @@ -31,10 +31,10 @@ pub trait repair_editor_asset_media_and_return { input: EditorAssetMediaRepairInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl repair_editor_asset_media_and_return for super::RemoteProcedures { input: EditorAssetMediaRepairInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, EditorAssetProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/repair_editor_project_resource_media_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/repair_editor_project_resource_media_and_return_procedure.rs index 7e521cd37..47b5c9178 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/repair_editor_project_resource_media_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/repair_editor_project_resource_media_and_return_procedure.rs @@ -34,10 +34,10 @@ pub trait repair_editor_project_resource_media_and_return { input: EditorProjectResourceMediaRepairInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -47,10 +47,10 @@ impl repair_editor_project_resource_media_and_return for super::RemoteProcedures input: EditorProjectResourceMediaRepairInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, EditorProjectResourceProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/resolve_combat_action_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/resolve_combat_action_and_return_procedure.rs index ac8aa07d8..7d6fbfd19 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/resolve_combat_action_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/resolve_combat_action_and_return_procedure.rs @@ -31,10 +31,10 @@ pub trait resolve_combat_action_and_return { input: ResolveCombatActionInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl resolve_combat_action_and_return for super::RemoteProcedures { input: ResolveCombatActionInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, ResolveCombatActionProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/resolve_combat_action_reducer.rs b/server-rs/crates/spacetime-client/src/module_bindings/resolve_combat_action_reducer.rs index 41340e2f1..8398db8cd 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/resolve_combat_action_reducer.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/resolve_combat_action_reducer.rs @@ -47,9 +47,11 @@ pub trait resolve_combat_action { &self, input: ResolveCombatActionInput, - callback: impl FnOnce(&super::ReducerEventContext, Result, __sdk::InternalError>) - + Send - + 'static, + callback: impl FnOnce( + &super::ReducerEventContext, + Result, __sdk::InternalError>, + ) + Send + + 'static, ) -> __sdk::Result<()>; } @@ -58,9 +60,11 @@ impl resolve_combat_action for super::RemoteReducers { &self, input: ResolveCombatActionInput, - callback: impl FnOnce(&super::ReducerEventContext, Result, __sdk::InternalError>) - + Send - + 'static, + callback: impl FnOnce( + &super::ReducerEventContext, + Result, __sdk::InternalError>, + ) + Send + + 'static, ) -> __sdk::Result<()> { self.imp .invoke_reducer_with_callback(ResolveCombatActionArgs { input }, callback) diff --git a/server-rs/crates/spacetime-client/src/module_bindings/resolve_npc_battle_interaction_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/resolve_npc_battle_interaction_and_return_procedure.rs index ff4cca292..268483bf8 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/resolve_npc_battle_interaction_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/resolve_npc_battle_interaction_and_return_procedure.rs @@ -31,10 +31,10 @@ pub trait resolve_npc_battle_interaction_and_return { input: ResolveNpcBattleInteractionInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl resolve_npc_battle_interaction_and_return for super::RemoteProcedures { input: ResolveNpcBattleInteractionInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, NpcBattleInteractionProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/resolve_npc_interaction_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/resolve_npc_interaction_and_return_procedure.rs index aaba3d9cb..4604fc309 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/resolve_npc_interaction_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/resolve_npc_interaction_and_return_procedure.rs @@ -31,10 +31,10 @@ pub trait resolve_npc_interaction_and_return { input: ResolveNpcInteractionInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl resolve_npc_interaction_and_return for super::RemoteProcedures { input: ResolveNpcInteractionInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, NpcInteractionProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/resolve_npc_interaction_reducer.rs b/server-rs/crates/spacetime-client/src/module_bindings/resolve_npc_interaction_reducer.rs index 52d213b54..352f5a93b 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/resolve_npc_interaction_reducer.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/resolve_npc_interaction_reducer.rs @@ -47,9 +47,11 @@ pub trait resolve_npc_interaction { &self, input: ResolveNpcInteractionInput, - callback: impl FnOnce(&super::ReducerEventContext, Result, __sdk::InternalError>) - + Send - + 'static, + callback: impl FnOnce( + &super::ReducerEventContext, + Result, __sdk::InternalError>, + ) + Send + + 'static, ) -> __sdk::Result<()>; } @@ -58,9 +60,11 @@ impl resolve_npc_interaction for super::RemoteReducers { &self, input: ResolveNpcInteractionInput, - callback: impl FnOnce(&super::ReducerEventContext, Result, __sdk::InternalError>) - + Send - + 'static, + callback: impl FnOnce( + &super::ReducerEventContext, + Result, __sdk::InternalError>, + ) + Send + + 'static, ) -> __sdk::Result<()> { self.imp .invoke_reducer_with_callback(ResolveNpcInteractionArgs { input }, callback) diff --git a/server-rs/crates/spacetime-client/src/module_bindings/resolve_npc_social_action_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/resolve_npc_social_action_and_return_procedure.rs index c14256495..65b1690ec 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/resolve_npc_social_action_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/resolve_npc_social_action_and_return_procedure.rs @@ -31,10 +31,10 @@ pub trait resolve_npc_social_action_and_return { input: ResolveNpcSocialActionInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl resolve_npc_social_action_and_return for super::RemoteProcedures { input: ResolveNpcSocialActionInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, NpcStateProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/resolve_npc_social_action_reducer.rs b/server-rs/crates/spacetime-client/src/module_bindings/resolve_npc_social_action_reducer.rs index 28e5ce36a..9b3269315 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/resolve_npc_social_action_reducer.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/resolve_npc_social_action_reducer.rs @@ -47,9 +47,11 @@ pub trait resolve_npc_social_action { &self, input: ResolveNpcSocialActionInput, - callback: impl FnOnce(&super::ReducerEventContext, Result, __sdk::InternalError>) - + Send - + 'static, + callback: impl FnOnce( + &super::ReducerEventContext, + Result, __sdk::InternalError>, + ) + Send + + 'static, ) -> __sdk::Result<()>; } @@ -58,9 +60,11 @@ impl resolve_npc_social_action for super::RemoteReducers { &self, input: ResolveNpcSocialActionInput, - callback: impl FnOnce(&super::ReducerEventContext, Result, __sdk::InternalError>) - + Send - + 'static, + callback: impl FnOnce( + &super::ReducerEventContext, + Result, __sdk::InternalError>, + ) + Send + + 'static, ) -> __sdk::Result<()> { self.imp .invoke_reducer_with_callback(ResolveNpcSocialActionArgs { input }, callback) diff --git a/server-rs/crates/spacetime-client/src/module_bindings/resolve_treasure_interaction_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/resolve_treasure_interaction_and_return_procedure.rs index a224c122d..0b8f6bad2 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/resolve_treasure_interaction_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/resolve_treasure_interaction_and_return_procedure.rs @@ -31,10 +31,10 @@ pub trait resolve_treasure_interaction_and_return { input: TreasureResolveInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl resolve_treasure_interaction_and_return for super::RemoteProcedures { input: TreasureResolveInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, TreasureRecordProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/resolve_treasure_interaction_reducer.rs b/server-rs/crates/spacetime-client/src/module_bindings/resolve_treasure_interaction_reducer.rs index 942b377a0..221ac39d3 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/resolve_treasure_interaction_reducer.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/resolve_treasure_interaction_reducer.rs @@ -47,9 +47,11 @@ pub trait resolve_treasure_interaction { &self, input: TreasureResolveInput, - callback: impl FnOnce(&super::ReducerEventContext, Result, __sdk::InternalError>) - + Send - + 'static, + callback: impl FnOnce( + &super::ReducerEventContext, + Result, __sdk::InternalError>, + ) + Send + + 'static, ) -> __sdk::Result<()>; } @@ -58,9 +60,11 @@ impl resolve_treasure_interaction for super::RemoteReducers { &self, input: TreasureResolveInput, - callback: impl FnOnce(&super::ReducerEventContext, Result, __sdk::InternalError>) - + Send - + 'static, + callback: impl FnOnce( + &super::ReducerEventContext, + Result, __sdk::InternalError>, + ) + Send + + 'static, ) -> __sdk::Result<()> { self.imp .invoke_reducer_with_callback(ResolveTreasureInteractionArgs { input }, callback) diff --git a/server-rs/crates/spacetime-client/src/module_bindings/restart_jump_hop_run_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/restart_jump_hop_run_procedure.rs index f88b059cd..cde6dacab 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/restart_jump_hop_run_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/restart_jump_hop_run_procedure.rs @@ -31,10 +31,10 @@ pub trait restart_jump_hop_run { input: JumpHopRunRestartInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl restart_jump_hop_run for super::RemoteProcedures { input: JumpHopRunRestartInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, JumpHopRunProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/restart_match_3_d_run_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/restart_match_3_d_run_procedure.rs index add954d43..76c74037b 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/restart_match_3_d_run_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/restart_match_3_d_run_procedure.rs @@ -31,10 +31,10 @@ pub trait restart_match_3_d_run { input: Match3DRunRestartInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl restart_match_3_d_run for super::RemoteProcedures { input: Match3DRunRestartInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, Match3DRunProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/restart_square_hole_run_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/restart_square_hole_run_procedure.rs index fe07f1477..df72d4d33 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/restart_square_hole_run_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/restart_square_hole_run_procedure.rs @@ -31,10 +31,10 @@ pub trait restart_square_hole_run { input: SquareHoleRunRestartInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl restart_square_hole_run for super::RemoteProcedures { input: SquareHoleRunRestartInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, SquareHoleRunProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/resume_profile_save_archive_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/resume_profile_save_archive_and_return_procedure.rs index 957c105fa..73e6d668e 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/resume_profile_save_archive_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/resume_profile_save_archive_and_return_procedure.rs @@ -31,10 +31,10 @@ pub trait resume_profile_save_archive_and_return { input: RuntimeProfileSaveArchiveResumeInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl resume_profile_save_archive_and_return for super::RemoteProcedures { input: RuntimeProfileSaveArchiveResumeInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, RuntimeProfileSaveArchiveProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/retry_puzzle_clear_level_run_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/retry_puzzle_clear_level_run_procedure.rs index b2b816bb7..4a7523c15 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/retry_puzzle_clear_level_run_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/retry_puzzle_clear_level_run_procedure.rs @@ -31,10 +31,10 @@ pub trait retry_puzzle_clear_level_run { input: PuzzleClearRunRetryLevelInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl retry_puzzle_clear_level_run for super::RemoteProcedures { input: PuzzleClearRunRetryLevelInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, PuzzleClearRunProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/revoke_database_migration_operator_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/revoke_database_migration_operator_procedure.rs index feb5086ed..fe0329266 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/revoke_database_migration_operator_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/revoke_database_migration_operator_procedure.rs @@ -31,10 +31,10 @@ pub trait revoke_database_migration_operator { input: DatabaseMigrationRevokeOperatorInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl revoke_database_migration_operator for super::RemoteProcedures { input: DatabaseMigrationRevokeOperatorInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, DatabaseMigrationOperatorProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/revoke_external_api_key_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/revoke_external_api_key_and_return_procedure.rs index d893b2180..9faef438c 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/revoke_external_api_key_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/revoke_external_api_key_and_return_procedure.rs @@ -31,10 +31,10 @@ pub trait revoke_external_api_key_and_return { input: ExternalApiKeyRevokeInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl revoke_external_api_key_and_return for super::RemoteProcedures { input: ExternalApiKeyRevokeInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, ExternalApiKeyProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/runtime_profile_recharge_order_close_input_type.rs b/server-rs/crates/spacetime-client/src/module_bindings/runtime_profile_recharge_order_close_input_type.rs new file mode 100644 index 000000000..1e0351aec --- /dev/null +++ b/server-rs/crates/spacetime-client/src/module_bindings/runtime_profile_recharge_order_close_input_type.rs @@ -0,0 +1,16 @@ +// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE +// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD. + +#![allow(unused, clippy::all)] +use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws}; + +#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)] +#[sats(crate = __lib)] +pub struct RuntimeProfileRechargeOrderCloseInput { + pub order_id: String, + pub closed_at_micros: i64, +} + +impl __sdk::InModule for RuntimeProfileRechargeOrderCloseInput { + type Module = super::RemoteModule; +} diff --git a/server-rs/crates/spacetime-client/src/module_bindings/runtime_profile_recharge_order_expiration_claim_input_type.rs b/server-rs/crates/spacetime-client/src/module_bindings/runtime_profile_recharge_order_expiration_claim_input_type.rs new file mode 100644 index 000000000..df57e62d1 --- /dev/null +++ b/server-rs/crates/spacetime-client/src/module_bindings/runtime_profile_recharge_order_expiration_claim_input_type.rs @@ -0,0 +1,18 @@ +// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE +// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD. + +#![allow(unused, clippy::all)] +use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws}; + +#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)] +#[sats(crate = __lib)] +pub struct RuntimeProfileRechargeOrderExpirationClaimInput { + pub worker_id: String, + pub now_micros: i64, + pub lease_expires_at_micros: i64, + pub limit: u32, +} + +impl __sdk::InModule for RuntimeProfileRechargeOrderExpirationClaimInput { + type Module = super::RemoteModule; +} diff --git a/server-rs/crates/spacetime-client/src/module_bindings/runtime_profile_recharge_order_expiration_claim_procedure_result_type.rs b/server-rs/crates/spacetime-client/src/module_bindings/runtime_profile_recharge_order_expiration_claim_procedure_result_type.rs new file mode 100644 index 000000000..e88943e56 --- /dev/null +++ b/server-rs/crates/spacetime-client/src/module_bindings/runtime_profile_recharge_order_expiration_claim_procedure_result_type.rs @@ -0,0 +1,19 @@ +// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE +// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD. + +#![allow(unused, clippy::all)] +use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws}; + +use super::runtime_profile_recharge_order_expiration_schedule_snapshot_type::RuntimeProfileRechargeOrderExpirationScheduleSnapshot; + +#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)] +#[sats(crate = __lib)] +pub struct RuntimeProfileRechargeOrderExpirationClaimProcedureResult { + pub ok: bool, + pub entries: Vec, + pub error_message: Option, +} + +impl __sdk::InModule for RuntimeProfileRechargeOrderExpirationClaimProcedureResult { + type Module = super::RemoteModule; +} diff --git a/server-rs/crates/spacetime-client/src/module_bindings/runtime_profile_recharge_order_expiration_complete_input_type.rs b/server-rs/crates/spacetime-client/src/module_bindings/runtime_profile_recharge_order_expiration_complete_input_type.rs new file mode 100644 index 000000000..5f75a7cb6 --- /dev/null +++ b/server-rs/crates/spacetime-client/src/module_bindings/runtime_profile_recharge_order_expiration_complete_input_type.rs @@ -0,0 +1,15 @@ +// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE +// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD. + +#![allow(unused, clippy::all)] +use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws}; + +#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)] +#[sats(crate = __lib)] +pub struct RuntimeProfileRechargeOrderExpirationCompleteInput { + pub order_id: String, +} + +impl __sdk::InModule for RuntimeProfileRechargeOrderExpirationCompleteInput { + type Module = super::RemoteModule; +} diff --git a/server-rs/crates/spacetime-client/src/module_bindings/runtime_profile_recharge_order_expiration_complete_procedure_result_type.rs b/server-rs/crates/spacetime-client/src/module_bindings/runtime_profile_recharge_order_expiration_complete_procedure_result_type.rs new file mode 100644 index 000000000..11bffd895 --- /dev/null +++ b/server-rs/crates/spacetime-client/src/module_bindings/runtime_profile_recharge_order_expiration_complete_procedure_result_type.rs @@ -0,0 +1,16 @@ +// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE +// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD. + +#![allow(unused, clippy::all)] +use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws}; + +#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)] +#[sats(crate = __lib)] +pub struct RuntimeProfileRechargeOrderExpirationCompleteProcedureResult { + pub ok: bool, + pub error_message: Option, +} + +impl __sdk::InModule for RuntimeProfileRechargeOrderExpirationCompleteProcedureResult { + type Module = super::RemoteModule; +} diff --git a/server-rs/crates/spacetime-client/src/module_bindings/runtime_profile_recharge_order_expiration_schedule_snapshot_type.rs b/server-rs/crates/spacetime-client/src/module_bindings/runtime_profile_recharge_order_expiration_schedule_snapshot_type.rs new file mode 100644 index 000000000..38fa131ac --- /dev/null +++ b/server-rs/crates/spacetime-client/src/module_bindings/runtime_profile_recharge_order_expiration_schedule_snapshot_type.rs @@ -0,0 +1,21 @@ +// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE +// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD. + +#![allow(unused, clippy::all)] +use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws}; + +#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)] +#[sats(crate = __lib)] +pub struct RuntimeProfileRechargeOrderExpirationScheduleSnapshot { + pub order_id: String, + pub user_id: String, + pub scheduled_at_micros: i64, + pub lease_owner: Option, + pub lease_expires_at_micros: Option, + pub created_at_micros: i64, + pub updated_at_micros: i64, +} + +impl __sdk::InModule for RuntimeProfileRechargeOrderExpirationScheduleSnapshot { + type Module = super::RemoteModule; +} diff --git a/server-rs/crates/spacetime-client/src/module_bindings/save_editor_project_layout_ack_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/save_editor_project_layout_ack_procedure.rs index a564b72be..d2e864785 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/save_editor_project_layout_ack_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/save_editor_project_layout_ack_procedure.rs @@ -31,10 +31,10 @@ pub trait save_editor_project_layout_ack { input: EditorProjectLayoutSaveInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl save_editor_project_layout_ack for super::RemoteProcedures { input: EditorProjectLayoutSaveInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, EditorProjectLayoutSaveProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/save_editor_project_layout_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/save_editor_project_layout_and_return_procedure.rs index 17585bdf2..e4eb529dc 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/save_editor_project_layout_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/save_editor_project_layout_and_return_procedure.rs @@ -31,10 +31,10 @@ pub trait save_editor_project_layout_and_return { input: EditorProjectLayoutSaveInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl save_editor_project_layout_and_return for super::RemoteProcedures { input: EditorProjectLayoutSaveInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, EditorProjectProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/save_puzzle_form_draft_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/save_puzzle_form_draft_procedure.rs index bd13cb5f6..13aff9a3a 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/save_puzzle_form_draft_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/save_puzzle_form_draft_procedure.rs @@ -31,10 +31,10 @@ pub trait save_puzzle_form_draft { input: PuzzleFormDraftSaveInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl save_puzzle_form_draft for super::RemoteProcedures { input: PuzzleFormDraftSaveInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, PuzzleAgentSessionProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/save_puzzle_generated_images_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/save_puzzle_generated_images_procedure.rs index 85d174569..870d6d512 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/save_puzzle_generated_images_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/save_puzzle_generated_images_procedure.rs @@ -31,10 +31,10 @@ pub trait save_puzzle_generated_images { input: PuzzleGeneratedImagesSaveInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl save_puzzle_generated_images for super::RemoteProcedures { input: PuzzleGeneratedImagesSaveInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, PuzzleAgentSessionProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/save_puzzle_ui_background_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/save_puzzle_ui_background_procedure.rs index 80fa6304b..49750c176 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/save_puzzle_ui_background_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/save_puzzle_ui_background_procedure.rs @@ -31,10 +31,10 @@ pub trait save_puzzle_ui_background { input: PuzzleUiBackgroundSaveInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl save_puzzle_ui_background for super::RemoteProcedures { input: PuzzleUiBackgroundSaveInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, PuzzleAgentSessionProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/seed_analytics_date_dimensions_reducer.rs b/server-rs/crates/spacetime-client/src/module_bindings/seed_analytics_date_dimensions_reducer.rs index 6e2ac3ad9..29d3b91d9 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/seed_analytics_date_dimensions_reducer.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/seed_analytics_date_dimensions_reducer.rs @@ -50,9 +50,11 @@ pub trait seed_analytics_date_dimensions { &self, input: AnalyticsDateDimensionSeedInput, - callback: impl FnOnce(&super::ReducerEventContext, Result, __sdk::InternalError>) - + Send - + 'static, + callback: impl FnOnce( + &super::ReducerEventContext, + Result, __sdk::InternalError>, + ) + Send + + 'static, ) -> __sdk::Result<()>; } @@ -61,9 +63,11 @@ impl seed_analytics_date_dimensions for super::RemoteReducers { &self, input: AnalyticsDateDimensionSeedInput, - callback: impl FnOnce(&super::ReducerEventContext, Result, __sdk::InternalError>) - + Send - + 'static, + callback: impl FnOnce( + &super::ReducerEventContext, + Result, __sdk::InternalError>, + ) + Send + + 'static, ) -> __sdk::Result<()> { self.imp .invoke_reducer_with_callback(SeedAnalyticsDateDimensionsArgs { input }, callback) diff --git a/server-rs/crates/spacetime-client/src/module_bindings/select_puzzle_cover_image_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/select_puzzle_cover_image_procedure.rs index 9dde8aaab..fd4dd93ce 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/select_puzzle_cover_image_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/select_puzzle_cover_image_procedure.rs @@ -31,10 +31,10 @@ pub trait select_puzzle_cover_image { input: PuzzleSelectCoverImageInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl select_puzzle_cover_image for super::RemoteProcedures { input: PuzzleSelectCoverImageInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, PuzzleAgentSessionProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/square_hole_agent_message_table.rs b/server-rs/crates/spacetime-client/src/module_bindings/square_hole_agent_message_table.rs index 9507df730..63d9fa6be 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/square_hole_agent_message_table.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/square_hole_agent_message_table.rs @@ -153,7 +153,7 @@ pub trait square_hole_agent_messageQueryTableAccess { #[allow(non_snake_case)] /// Get a query builder for the table `SquareHoleAgentMessageRow`. fn square_hole_agent_message(&self) - -> __sdk::__query_builder::Table; + -> __sdk::__query_builder::Table; } impl square_hole_agent_messageQueryTableAccess for __sdk::QueryTableAccessor { diff --git a/server-rs/crates/spacetime-client/src/module_bindings/square_hole_agent_session_table.rs b/server-rs/crates/spacetime-client/src/module_bindings/square_hole_agent_session_table.rs index 1f8098b1c..057e44690 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/square_hole_agent_session_table.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/square_hole_agent_session_table.rs @@ -153,7 +153,7 @@ pub trait square_hole_agent_sessionQueryTableAccess { #[allow(non_snake_case)] /// Get a query builder for the table `SquareHoleAgentSessionRow`. fn square_hole_agent_session(&self) - -> __sdk::__query_builder::Table; + -> __sdk::__query_builder::Table; } impl square_hole_agent_sessionQueryTableAccess for __sdk::QueryTableAccessor { diff --git a/server-rs/crates/spacetime-client/src/module_bindings/start_ai_task_reducer.rs b/server-rs/crates/spacetime-client/src/module_bindings/start_ai_task_reducer.rs index 5809736bd..c5cc52567 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/start_ai_task_reducer.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/start_ai_task_reducer.rs @@ -47,9 +47,11 @@ pub trait start_ai_task { &self, input: AiTaskStartInput, - callback: impl FnOnce(&super::ReducerEventContext, Result, __sdk::InternalError>) - + Send - + 'static, + callback: impl FnOnce( + &super::ReducerEventContext, + Result, __sdk::InternalError>, + ) + Send + + 'static, ) -> __sdk::Result<()>; } @@ -58,9 +60,11 @@ impl start_ai_task for super::RemoteReducers { &self, input: AiTaskStartInput, - callback: impl FnOnce(&super::ReducerEventContext, Result, __sdk::InternalError>) - + Send - + 'static, + callback: impl FnOnce( + &super::ReducerEventContext, + Result, __sdk::InternalError>, + ) + Send + + 'static, ) -> __sdk::Result<()> { self.imp .invoke_reducer_with_callback(StartAiTaskArgs { input }, callback) diff --git a/server-rs/crates/spacetime-client/src/module_bindings/start_ai_task_stage_reducer.rs b/server-rs/crates/spacetime-client/src/module_bindings/start_ai_task_stage_reducer.rs index 1d7b7582a..24ed5b3fa 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/start_ai_task_stage_reducer.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/start_ai_task_stage_reducer.rs @@ -47,9 +47,11 @@ pub trait start_ai_task_stage { &self, input: AiTaskStageStartInput, - callback: impl FnOnce(&super::ReducerEventContext, Result, __sdk::InternalError>) - + Send - + 'static, + callback: impl FnOnce( + &super::ReducerEventContext, + Result, __sdk::InternalError>, + ) + Send + + 'static, ) -> __sdk::Result<()>; } @@ -58,9 +60,11 @@ impl start_ai_task_stage for super::RemoteReducers { &self, input: AiTaskStageStartInput, - callback: impl FnOnce(&super::ReducerEventContext, Result, __sdk::InternalError>) - + Send - + 'static, + callback: impl FnOnce( + &super::ReducerEventContext, + Result, __sdk::InternalError>, + ) + Send + + 'static, ) -> __sdk::Result<()> { self.imp .invoke_reducer_with_callback(StartAiTaskStageArgs { input }, callback) diff --git a/server-rs/crates/spacetime-client/src/module_bindings/start_bark_battle_run_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/start_bark_battle_run_procedure.rs index a29ff5e9e..1fdc1a093 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/start_bark_battle_run_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/start_bark_battle_run_procedure.rs @@ -31,10 +31,10 @@ pub trait start_bark_battle_run { input: BarkBattleRunStartInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl start_bark_battle_run for super::RemoteProcedures { input: BarkBattleRunStartInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, BarkBattleProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/start_big_fish_run_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/start_big_fish_run_procedure.rs index 7f3713ab3..6a149f03f 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/start_big_fish_run_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/start_big_fish_run_procedure.rs @@ -31,10 +31,10 @@ pub trait start_big_fish_run { input: BigFishRunStartInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl start_big_fish_run for super::RemoteProcedures { input: BigFishRunStartInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, BigFishRunProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/start_jump_hop_run_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/start_jump_hop_run_procedure.rs index c5da32982..7a52fc9fe 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/start_jump_hop_run_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/start_jump_hop_run_procedure.rs @@ -31,10 +31,10 @@ pub trait start_jump_hop_run { input: JumpHopRunStartInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl start_jump_hop_run for super::RemoteProcedures { input: JumpHopRunStartInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, JumpHopRunProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/start_match_3_d_run_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/start_match_3_d_run_procedure.rs index d4126af9b..c0a8c8a93 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/start_match_3_d_run_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/start_match_3_d_run_procedure.rs @@ -31,10 +31,10 @@ pub trait start_match_3_d_run { input: Match3DRunStartInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl start_match_3_d_run for super::RemoteProcedures { input: Match3DRunStartInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, Match3DRunProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/start_puzzle_clear_runtime_run_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/start_puzzle_clear_runtime_run_procedure.rs index 069b523c6..c9f6660c6 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/start_puzzle_clear_runtime_run_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/start_puzzle_clear_runtime_run_procedure.rs @@ -31,10 +31,10 @@ pub trait start_puzzle_clear_runtime_run { input: PuzzleClearRunStartInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl start_puzzle_clear_runtime_run for super::RemoteProcedures { input: PuzzleClearRunStartInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, PuzzleClearRunProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/start_puzzle_run_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/start_puzzle_run_procedure.rs index b6baeb838..c3d6d4576 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/start_puzzle_run_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/start_puzzle_run_procedure.rs @@ -31,10 +31,10 @@ pub trait start_puzzle_run { input: PuzzleRunStartInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl start_puzzle_run for super::RemoteProcedures { input: PuzzleRunStartInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, PuzzleRunProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/start_square_hole_run_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/start_square_hole_run_procedure.rs index d85e730b0..bda9eddd7 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/start_square_hole_run_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/start_square_hole_run_procedure.rs @@ -31,10 +31,10 @@ pub trait start_square_hole_run { input: SquareHoleRunStartInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl start_square_hole_run for super::RemoteProcedures { input: SquareHoleRunStartInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, SquareHoleRunProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/start_visual_novel_run_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/start_visual_novel_run_procedure.rs index 98f9cfa03..fabc598a1 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/start_visual_novel_run_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/start_visual_novel_run_procedure.rs @@ -31,10 +31,10 @@ pub trait start_visual_novel_run { input: VisualNovelRunStartInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl start_visual_novel_run for super::RemoteProcedures { input: VisualNovelRunStartInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, VisualNovelRunProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/start_wooden_fish_run_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/start_wooden_fish_run_procedure.rs index 65fa87c2e..daf6358ed 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/start_wooden_fish_run_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/start_wooden_fish_run_procedure.rs @@ -31,10 +31,10 @@ pub trait start_wooden_fish_run { input: WoodenFishRunStartInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl start_wooden_fish_run for super::RemoteProcedures { input: WoodenFishRunStartInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, WoodenFishRunProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/stop_match_3_d_run_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/stop_match_3_d_run_procedure.rs index f87a63d50..630e7a981 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/stop_match_3_d_run_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/stop_match_3_d_run_procedure.rs @@ -31,10 +31,10 @@ pub trait stop_match_3_d_run { input: Match3DRunStopInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl stop_match_3_d_run for super::RemoteProcedures { input: Match3DRunStopInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, Match3DRunProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/stop_square_hole_run_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/stop_square_hole_run_procedure.rs index 076a3af89..90702e09d 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/stop_square_hole_run_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/stop_square_hole_run_procedure.rs @@ -31,10 +31,10 @@ pub trait stop_square_hole_run { input: SquareHoleRunStopInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl stop_square_hole_run for super::RemoteProcedures { input: SquareHoleRunStopInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, SquareHoleRunProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/submit_big_fish_input_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/submit_big_fish_input_procedure.rs index 8ef444c53..e5bbe6b02 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/submit_big_fish_input_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/submit_big_fish_input_procedure.rs @@ -31,10 +31,10 @@ pub trait submit_big_fish_input { input: BigFishInputSubmitInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl submit_big_fish_input for super::RemoteProcedures { input: BigFishInputSubmitInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, BigFishRunProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/submit_big_fish_message_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/submit_big_fish_message_procedure.rs index 0dbc01181..307d77554 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/submit_big_fish_message_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/submit_big_fish_message_procedure.rs @@ -31,10 +31,10 @@ pub trait submit_big_fish_message { input: BigFishMessageSubmitInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl submit_big_fish_message for super::RemoteProcedures { input: BigFishMessageSubmitInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, BigFishSessionProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/submit_custom_world_agent_message_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/submit_custom_world_agent_message_procedure.rs index c5e8def19..5debac19f 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/submit_custom_world_agent_message_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/submit_custom_world_agent_message_procedure.rs @@ -31,10 +31,10 @@ pub trait submit_custom_world_agent_message { input: CustomWorldAgentMessageSubmitInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl submit_custom_world_agent_message for super::RemoteProcedures { input: CustomWorldAgentMessageSubmitInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, CustomWorldAgentOperationProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/submit_editor_showcase_asset_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/submit_editor_showcase_asset_and_return_procedure.rs index 7002e581b..367fd0fdb 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/submit_editor_showcase_asset_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/submit_editor_showcase_asset_and_return_procedure.rs @@ -31,10 +31,10 @@ pub trait submit_editor_showcase_asset_and_return { input: EditorShowcaseAssetSubmitInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl submit_editor_showcase_asset_and_return for super::RemoteProcedures { input: EditorShowcaseAssetSubmitInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, EditorShowcaseAssetProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/submit_match_3_d_agent_message_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/submit_match_3_d_agent_message_procedure.rs index 1ceceaf5d..c323ecda4 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/submit_match_3_d_agent_message_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/submit_match_3_d_agent_message_procedure.rs @@ -31,10 +31,10 @@ pub trait submit_match_3_d_agent_message { input: Match3DAgentMessageSubmitInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl submit_match_3_d_agent_message for super::RemoteProcedures { input: Match3DAgentMessageSubmitInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, Match3DAgentSessionProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/submit_profile_feedback_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/submit_profile_feedback_and_return_procedure.rs index 3534df7d3..208a35a95 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/submit_profile_feedback_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/submit_profile_feedback_and_return_procedure.rs @@ -31,10 +31,10 @@ pub trait submit_profile_feedback_and_return { input: RuntimeProfileFeedbackSubmissionInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl submit_profile_feedback_and_return for super::RemoteProcedures { input: RuntimeProfileFeedbackSubmissionInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, RuntimeProfileFeedbackSubmissionProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/submit_puzzle_agent_message_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/submit_puzzle_agent_message_procedure.rs index b5b2b0903..0d9e94e58 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/submit_puzzle_agent_message_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/submit_puzzle_agent_message_procedure.rs @@ -31,10 +31,10 @@ pub trait submit_puzzle_agent_message { input: PuzzleAgentMessageSubmitInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl submit_puzzle_agent_message for super::RemoteProcedures { input: PuzzleAgentMessageSubmitInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, PuzzleAgentSessionProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/submit_puzzle_leaderboard_entry_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/submit_puzzle_leaderboard_entry_procedure.rs index 7df245643..9f72a916c 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/submit_puzzle_leaderboard_entry_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/submit_puzzle_leaderboard_entry_procedure.rs @@ -31,10 +31,10 @@ pub trait submit_puzzle_leaderboard_entry { input: PuzzleLeaderboardSubmitInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl submit_puzzle_leaderboard_entry for super::RemoteProcedures { input: PuzzleLeaderboardSubmitInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, PuzzleRunProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/submit_square_hole_agent_message_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/submit_square_hole_agent_message_procedure.rs index e740fe61b..bbdbe51da 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/submit_square_hole_agent_message_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/submit_square_hole_agent_message_procedure.rs @@ -31,10 +31,10 @@ pub trait submit_square_hole_agent_message { input: SquareHoleAgentMessageSubmitInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl submit_square_hole_agent_message for super::RemoteProcedures { input: SquareHoleAgentMessageSubmitInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, SquareHoleAgentSessionProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/submit_visual_novel_agent_message_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/submit_visual_novel_agent_message_procedure.rs index 0df949bd7..5e9c93bb3 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/submit_visual_novel_agent_message_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/submit_visual_novel_agent_message_procedure.rs @@ -31,10 +31,10 @@ pub trait submit_visual_novel_agent_message { input: VisualNovelAgentMessageSubmitInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl submit_visual_novel_agent_message for super::RemoteProcedures { input: VisualNovelAgentMessageSubmitInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, VisualNovelAgentSessionProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/swap_puzzle_clear_cards_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/swap_puzzle_clear_cards_procedure.rs index fef0c0379..d527f9ed2 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/swap_puzzle_clear_cards_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/swap_puzzle_clear_cards_procedure.rs @@ -31,10 +31,10 @@ pub trait swap_puzzle_clear_cards { input: PuzzleClearRunSwapInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl swap_puzzle_clear_cards for super::RemoteProcedures { input: PuzzleClearRunSwapInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, PuzzleClearRunProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/swap_puzzle_pieces_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/swap_puzzle_pieces_procedure.rs index 9c6a13378..f5835607f 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/swap_puzzle_pieces_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/swap_puzzle_pieces_procedure.rs @@ -31,10 +31,10 @@ pub trait swap_puzzle_pieces { input: PuzzleRunSwapInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl swap_puzzle_pieces for super::RemoteProcedures { input: PuzzleRunSwapInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, PuzzleRunProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/sync_auth_store_projection_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/sync_auth_store_projection_procedure.rs index 7d4803e27..d9f1ca3e3 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/sync_auth_store_projection_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/sync_auth_store_projection_procedure.rs @@ -31,10 +31,10 @@ pub trait sync_auth_store_projection { input: AuthStoreProjectionView, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl sync_auth_store_projection for super::RemoteProcedures { input: AuthStoreProjectionView, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, AuthStoreProjectionSyncProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/toggle_editor_showcase_asset_like_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/toggle_editor_showcase_asset_like_and_return_procedure.rs index a014ceba1..8fc194ca2 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/toggle_editor_showcase_asset_like_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/toggle_editor_showcase_asset_like_and_return_procedure.rs @@ -34,10 +34,10 @@ pub trait toggle_editor_showcase_asset_like_and_return { input: EditorShowcaseAssetLikeToggleInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -47,10 +47,10 @@ impl toggle_editor_showcase_asset_like_and_return for super::RemoteProcedures { input: EditorShowcaseAssetLikeToggleInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, EditorShowcaseAssetProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/turn_in_quest_reducer.rs b/server-rs/crates/spacetime-client/src/module_bindings/turn_in_quest_reducer.rs index 4306a47f1..08727f040 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/turn_in_quest_reducer.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/turn_in_quest_reducer.rs @@ -47,9 +47,11 @@ pub trait turn_in_quest { &self, input: QuestTurnInInput, - callback: impl FnOnce(&super::ReducerEventContext, Result, __sdk::InternalError>) - + Send - + 'static, + callback: impl FnOnce( + &super::ReducerEventContext, + Result, __sdk::InternalError>, + ) + Send + + 'static, ) -> __sdk::Result<()>; } @@ -58,9 +60,11 @@ impl turn_in_quest for super::RemoteReducers { &self, input: QuestTurnInInput, - callback: impl FnOnce(&super::ReducerEventContext, Result, __sdk::InternalError>) - + Send - + 'static, + callback: impl FnOnce( + &super::ReducerEventContext, + Result, __sdk::InternalError>, + ) + Send + + 'static, ) -> __sdk::Result<()> { self.imp .invoke_reducer_with_callback(TurnInQuestArgs { input }, callback) diff --git a/server-rs/crates/spacetime-client/src/module_bindings/unpublish_custom_world_profile_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/unpublish_custom_world_profile_and_return_procedure.rs index b87880a7e..31acccce2 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/unpublish_custom_world_profile_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/unpublish_custom_world_profile_and_return_procedure.rs @@ -31,10 +31,10 @@ pub trait unpublish_custom_world_profile_and_return { input: CustomWorldProfileUnpublishInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl unpublish_custom_world_profile_and_return for super::RemoteProcedures { input: CustomWorldProfileUnpublishInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, CustomWorldLibraryMutationResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/unpublish_custom_world_profile_reducer.rs b/server-rs/crates/spacetime-client/src/module_bindings/unpublish_custom_world_profile_reducer.rs index 05274f62d..51af927fa 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/unpublish_custom_world_profile_reducer.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/unpublish_custom_world_profile_reducer.rs @@ -50,9 +50,11 @@ pub trait unpublish_custom_world_profile { &self, input: CustomWorldProfileUnpublishInput, - callback: impl FnOnce(&super::ReducerEventContext, Result, __sdk::InternalError>) - + Send - + 'static, + callback: impl FnOnce( + &super::ReducerEventContext, + Result, __sdk::InternalError>, + ) + Send + + 'static, ) -> __sdk::Result<()>; } @@ -61,9 +63,11 @@ impl unpublish_custom_world_profile for super::RemoteReducers { &self, input: CustomWorldProfileUnpublishInput, - callback: impl FnOnce(&super::ReducerEventContext, Result, __sdk::InternalError>) - + Send - + 'static, + callback: impl FnOnce( + &super::ReducerEventContext, + Result, __sdk::InternalError>, + ) + Send + + 'static, ) -> __sdk::Result<()> { self.imp .invoke_reducer_with_callback(UnpublishCustomWorldProfileArgs { input }, callback) diff --git a/server-rs/crates/spacetime-client/src/module_bindings/update_bark_battle_draft_config_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/update_bark_battle_draft_config_procedure.rs index 545ca3f8c..bd9fc4212 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/update_bark_battle_draft_config_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/update_bark_battle_draft_config_procedure.rs @@ -31,10 +31,10 @@ pub trait update_bark_battle_draft_config { input: BarkBattleDraftConfigUpsertInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl update_bark_battle_draft_config for super::RemoteProcedures { input: BarkBattleDraftConfigUpsertInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, BarkBattleProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/update_editor_asset_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/update_editor_asset_and_return_procedure.rs index 1ec662919..4e0cfd34e 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/update_editor_asset_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/update_editor_asset_and_return_procedure.rs @@ -31,10 +31,10 @@ pub trait update_editor_asset_and_return { input: EditorAssetUpdateInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl update_editor_asset_and_return for super::RemoteProcedures { input: EditorAssetUpdateInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, EditorAssetProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/update_editor_asset_folder_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/update_editor_asset_folder_and_return_procedure.rs index a5ec71437..91ca31fc5 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/update_editor_asset_folder_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/update_editor_asset_folder_and_return_procedure.rs @@ -31,10 +31,10 @@ pub trait update_editor_asset_folder_and_return { input: EditorAssetFolderUpdateInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl update_editor_asset_folder_and_return for super::RemoteProcedures { input: EditorAssetFolderUpdateInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, EditorAssetFolderProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/update_editor_project_resource_showcase_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/update_editor_project_resource_showcase_and_return_procedure.rs index 200432a78..c49ab8d9d 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/update_editor_project_resource_showcase_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/update_editor_project_resource_showcase_and_return_procedure.rs @@ -34,10 +34,10 @@ pub trait update_editor_project_resource_showcase_and_return { input: EditorProjectResourceShowcaseUpdateInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -47,10 +47,10 @@ impl update_editor_project_resource_showcase_and_return for super::RemoteProcedu input: EditorProjectResourceShowcaseUpdateInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, EditorProjectResourceProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/update_editor_showcase_asset_display_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/update_editor_showcase_asset_display_and_return_procedure.rs index 40b912558..85db684da 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/update_editor_showcase_asset_display_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/update_editor_showcase_asset_display_and_return_procedure.rs @@ -34,10 +34,10 @@ pub trait update_editor_showcase_asset_display_and_return { input: EditorShowcaseAssetDisplayUpdateInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -47,10 +47,10 @@ impl update_editor_showcase_asset_display_and_return for super::RemoteProcedures input: EditorShowcaseAssetDisplayUpdateInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, EditorShowcaseAssetProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/update_jump_hop_work_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/update_jump_hop_work_procedure.rs index c5f246bf4..9186048bb 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/update_jump_hop_work_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/update_jump_hop_work_procedure.rs @@ -31,10 +31,10 @@ pub trait update_jump_hop_work { input: JumpHopWorkUpdateInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl update_jump_hop_work for super::RemoteProcedures { input: JumpHopWorkUpdateInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, JumpHopWorkProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/update_match_3_d_work_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/update_match_3_d_work_procedure.rs index ea2ee9b43..cdc427828 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/update_match_3_d_work_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/update_match_3_d_work_procedure.rs @@ -31,10 +31,10 @@ pub trait update_match_3_d_work { input: Match3DWorkUpdateInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl update_match_3_d_work for super::RemoteProcedures { input: Match3DWorkUpdateInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, Match3DWorkProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/update_puzzle_clear_work_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/update_puzzle_clear_work_procedure.rs index 2bc286f57..5f4b592aa 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/update_puzzle_clear_work_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/update_puzzle_clear_work_procedure.rs @@ -31,10 +31,10 @@ pub trait update_puzzle_clear_work { input: PuzzleClearWorkUpdateInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl update_puzzle_clear_work for super::RemoteProcedures { input: PuzzleClearWorkUpdateInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, PuzzleClearWorkProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/update_puzzle_run_pause_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/update_puzzle_run_pause_procedure.rs index 1679b5eca..3388380c7 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/update_puzzle_run_pause_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/update_puzzle_run_pause_procedure.rs @@ -31,10 +31,10 @@ pub trait update_puzzle_run_pause { input: PuzzleRunPauseInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl update_puzzle_run_pause for super::RemoteProcedures { input: PuzzleRunPauseInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, PuzzleRunProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/update_puzzle_work_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/update_puzzle_work_procedure.rs index 6710b4da4..805712418 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/update_puzzle_work_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/update_puzzle_work_procedure.rs @@ -31,10 +31,10 @@ pub trait update_puzzle_work { input: PuzzleWorkUpsertInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl update_puzzle_work for super::RemoteProcedures { input: PuzzleWorkUpsertInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, PuzzleWorkProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/update_square_hole_work_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/update_square_hole_work_procedure.rs index 167865275..914b3f05f 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/update_square_hole_work_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/update_square_hole_work_procedure.rs @@ -31,10 +31,10 @@ pub trait update_square_hole_work { input: SquareHoleWorkUpdateInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl update_square_hole_work for super::RemoteProcedures { input: SquareHoleWorkUpdateInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, SquareHoleWorkProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/update_visual_novel_work_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/update_visual_novel_work_procedure.rs index b6e61e332..bb0ccc4e4 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/update_visual_novel_work_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/update_visual_novel_work_procedure.rs @@ -31,10 +31,10 @@ pub trait update_visual_novel_work { input: VisualNovelWorkUpdateInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl update_visual_novel_work for super::RemoteProcedures { input: VisualNovelWorkUpdateInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, VisualNovelWorkProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/update_wooden_fish_work_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/update_wooden_fish_work_procedure.rs index 6b7c03d83..317852756 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/update_wooden_fish_work_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/update_wooden_fish_work_procedure.rs @@ -31,10 +31,10 @@ pub trait update_wooden_fish_work { input: WoodenFishWorkUpdateInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl update_wooden_fish_work for super::RemoteProcedures { input: WoodenFishWorkUpdateInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, WoodenFishWorkProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/upsert_chapter_progression_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/upsert_chapter_progression_and_return_procedure.rs index abc39bfe3..be3ff4736 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/upsert_chapter_progression_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/upsert_chapter_progression_and_return_procedure.rs @@ -31,10 +31,10 @@ pub trait upsert_chapter_progression_and_return { input: ChapterProgressionInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl upsert_chapter_progression_and_return for super::RemoteProcedures { input: ChapterProgressionInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, ChapterProgressionProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/upsert_chapter_progression_reducer.rs b/server-rs/crates/spacetime-client/src/module_bindings/upsert_chapter_progression_reducer.rs index 0cb4bb7ac..de37e9944 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/upsert_chapter_progression_reducer.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/upsert_chapter_progression_reducer.rs @@ -47,9 +47,11 @@ pub trait upsert_chapter_progression { &self, input: ChapterProgressionInput, - callback: impl FnOnce(&super::ReducerEventContext, Result, __sdk::InternalError>) - + Send - + 'static, + callback: impl FnOnce( + &super::ReducerEventContext, + Result, __sdk::InternalError>, + ) + Send + + 'static, ) -> __sdk::Result<()>; } @@ -58,9 +60,11 @@ impl upsert_chapter_progression for super::RemoteReducers { &self, input: ChapterProgressionInput, - callback: impl FnOnce(&super::ReducerEventContext, Result, __sdk::InternalError>) - + Send - + 'static, + callback: impl FnOnce( + &super::ReducerEventContext, + Result, __sdk::InternalError>, + ) + Send + + 'static, ) -> __sdk::Result<()> { self.imp .invoke_reducer_with_callback(UpsertChapterProgressionArgs { input }, callback) diff --git a/server-rs/crates/spacetime-client/src/module_bindings/upsert_creation_entry_event_banners_config_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/upsert_creation_entry_event_banners_config_procedure.rs index aea3d28e5..58e38d907 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/upsert_creation_entry_event_banners_config_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/upsert_creation_entry_event_banners_config_procedure.rs @@ -34,10 +34,10 @@ pub trait upsert_creation_entry_event_banners_config { input: CreationEntryEventBannersAdminUpsertInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -47,10 +47,10 @@ impl upsert_creation_entry_event_banners_config for super::RemoteProcedures { input: CreationEntryEventBannersAdminUpsertInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, CreationEntryConfigProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/upsert_creation_entry_type_config_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/upsert_creation_entry_type_config_procedure.rs index 32df13cb2..98f1f7fba 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/upsert_creation_entry_type_config_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/upsert_creation_entry_type_config_procedure.rs @@ -31,10 +31,10 @@ pub trait upsert_creation_entry_type_config { input: CreationEntryTypeAdminUpsertInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl upsert_creation_entry_type_config for super::RemoteProcedures { input: CreationEntryTypeAdminUpsertInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, CreationEntryConfigProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/upsert_custom_world_agent_operation_progress_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/upsert_custom_world_agent_operation_progress_procedure.rs index 554b95b20..6d8e39a21 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/upsert_custom_world_agent_operation_progress_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/upsert_custom_world_agent_operation_progress_procedure.rs @@ -34,10 +34,10 @@ pub trait upsert_custom_world_agent_operation_progress { input: CustomWorldAgentOperationProgressInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -47,10 +47,10 @@ impl upsert_custom_world_agent_operation_progress for super::RemoteProcedures { input: CustomWorldAgentOperationProgressInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, CustomWorldAgentOperationProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/upsert_custom_world_profile_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/upsert_custom_world_profile_and_return_procedure.rs index 343e1807f..a761ab958 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/upsert_custom_world_profile_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/upsert_custom_world_profile_and_return_procedure.rs @@ -31,10 +31,10 @@ pub trait upsert_custom_world_profile_and_return { input: CustomWorldProfileUpsertInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl upsert_custom_world_profile_and_return for super::RemoteProcedures { input: CustomWorldProfileUpsertInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, CustomWorldLibraryMutationResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/upsert_custom_world_profile_reducer.rs b/server-rs/crates/spacetime-client/src/module_bindings/upsert_custom_world_profile_reducer.rs index e343b491d..91ca26527 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/upsert_custom_world_profile_reducer.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/upsert_custom_world_profile_reducer.rs @@ -50,9 +50,11 @@ pub trait upsert_custom_world_profile { &self, input: CustomWorldProfileUpsertInput, - callback: impl FnOnce(&super::ReducerEventContext, Result, __sdk::InternalError>) - + Send - + 'static, + callback: impl FnOnce( + &super::ReducerEventContext, + Result, __sdk::InternalError>, + ) + Send + + 'static, ) -> __sdk::Result<()>; } @@ -61,9 +63,11 @@ impl upsert_custom_world_profile for super::RemoteReducers { &self, input: CustomWorldProfileUpsertInput, - callback: impl FnOnce(&super::ReducerEventContext, Result, __sdk::InternalError>) - + Send - + 'static, + callback: impl FnOnce( + &super::ReducerEventContext, + Result, __sdk::InternalError>, + ) + Send + + 'static, ) -> __sdk::Result<()> { self.imp .invoke_reducer_with_callback(UpsertCustomWorldProfileArgs { input }, callback) diff --git a/server-rs/crates/spacetime-client/src/module_bindings/upsert_editor_showcase_campaign_config_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/upsert_editor_showcase_campaign_config_and_return_procedure.rs index 490d65d5d..ae0bb7a6c 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/upsert_editor_showcase_campaign_config_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/upsert_editor_showcase_campaign_config_and_return_procedure.rs @@ -34,10 +34,10 @@ pub trait upsert_editor_showcase_campaign_config_and_return { input: EditorShowcaseCampaignConfigUpsertInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -47,10 +47,10 @@ impl upsert_editor_showcase_campaign_config_and_return for super::RemoteProcedur input: EditorShowcaseCampaignConfigUpsertInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, EditorShowcaseCampaignConfigProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/upsert_npc_state_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/upsert_npc_state_and_return_procedure.rs index b7f3a28d4..91ba0d0e5 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/upsert_npc_state_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/upsert_npc_state_and_return_procedure.rs @@ -31,10 +31,10 @@ pub trait upsert_npc_state_and_return { input: NpcStateUpsertInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl upsert_npc_state_and_return for super::RemoteProcedures { input: NpcStateUpsertInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, NpcStateProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/upsert_npc_state_reducer.rs b/server-rs/crates/spacetime-client/src/module_bindings/upsert_npc_state_reducer.rs index f363770d4..afbe61f81 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/upsert_npc_state_reducer.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/upsert_npc_state_reducer.rs @@ -47,9 +47,11 @@ pub trait upsert_npc_state { &self, input: NpcStateUpsertInput, - callback: impl FnOnce(&super::ReducerEventContext, Result, __sdk::InternalError>) - + Send - + 'static, + callback: impl FnOnce( + &super::ReducerEventContext, + Result, __sdk::InternalError>, + ) + Send + + 'static, ) -> __sdk::Result<()>; } @@ -58,9 +60,11 @@ impl upsert_npc_state for super::RemoteReducers { &self, input: NpcStateUpsertInput, - callback: impl FnOnce(&super::ReducerEventContext, Result, __sdk::InternalError>) - + Send - + 'static, + callback: impl FnOnce( + &super::ReducerEventContext, + Result, __sdk::InternalError>, + ) + Send + + 'static, ) -> __sdk::Result<()> { self.imp .invoke_reducer_with_callback(UpsertNpcStateArgs { input }, callback) diff --git a/server-rs/crates/spacetime-client/src/module_bindings/upsert_platform_browse_history_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/upsert_platform_browse_history_and_return_procedure.rs index 614a6d055..36e5f4646 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/upsert_platform_browse_history_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/upsert_platform_browse_history_and_return_procedure.rs @@ -31,10 +31,10 @@ pub trait upsert_platform_browse_history_and_return { input: RuntimeBrowseHistorySyncInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl upsert_platform_browse_history_and_return for super::RemoteProcedures { input: RuntimeBrowseHistorySyncInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, RuntimeBrowseHistoryProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/upsert_public_work_interaction_config_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/upsert_public_work_interaction_config_procedure.rs index 88e88d690..1a9a8857f 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/upsert_public_work_interaction_config_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/upsert_public_work_interaction_config_procedure.rs @@ -34,10 +34,10 @@ pub trait upsert_public_work_interaction_config { input: PublicWorkInteractionConfigAdminUpsertInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -47,10 +47,10 @@ impl upsert_public_work_interaction_config for super::RemoteProcedures { input: PublicWorkInteractionConfigAdminUpsertInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, CreationEntryConfigProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/upsert_runtime_setting_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/upsert_runtime_setting_and_return_procedure.rs index 119eab703..f8fa0351a 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/upsert_runtime_setting_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/upsert_runtime_setting_and_return_procedure.rs @@ -31,10 +31,10 @@ pub trait upsert_runtime_setting_and_return { input: RuntimeSettingUpsertInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl upsert_runtime_setting_and_return for super::RemoteProcedures { input: RuntimeSettingUpsertInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, RuntimeSettingProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/upsert_runtime_snapshot_and_return_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/upsert_runtime_snapshot_and_return_procedure.rs index eceae785b..fe0746baf 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/upsert_runtime_snapshot_and_return_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/upsert_runtime_snapshot_and_return_procedure.rs @@ -31,10 +31,10 @@ pub trait upsert_runtime_snapshot_and_return { input: RuntimeSnapshotUpsertInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl upsert_runtime_snapshot_and_return for super::RemoteProcedures { input: RuntimeSnapshotUpsertInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, RuntimeSnapshotProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/upsert_visual_novel_run_snapshot_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/upsert_visual_novel_run_snapshot_procedure.rs index 35722b1e4..8cc89e856 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/upsert_visual_novel_run_snapshot_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/upsert_visual_novel_run_snapshot_procedure.rs @@ -31,10 +31,10 @@ pub trait upsert_visual_novel_run_snapshot { input: VisualNovelRunSnapshotUpsertInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl upsert_visual_novel_run_snapshot for super::RemoteProcedures { input: VisualNovelRunSnapshotUpsertInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, VisualNovelRunProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/use_puzzle_runtime_prop_procedure.rs b/server-rs/crates/spacetime-client/src/module_bindings/use_puzzle_runtime_prop_procedure.rs index 45bd3a730..1e2dbe136 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/use_puzzle_runtime_prop_procedure.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/use_puzzle_runtime_prop_procedure.rs @@ -31,10 +31,10 @@ pub trait use_puzzle_runtime_prop { input: PuzzleRunPropInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ); } @@ -44,10 +44,10 @@ impl use_puzzle_runtime_prop for super::RemoteProcedures { input: PuzzleRunPropInput, __callback: impl FnOnce( - &super::ProcedureEventContext, - Result, - ) + Send - + 'static, + &super::ProcedureEventContext, + Result, + ) + Send + + 'static, ) { self.imp .invoke_procedure_with_callback::<_, PuzzleRunProcedureResult>( diff --git a/server-rs/crates/spacetime-client/src/module_bindings/visual_novel_gallery_view_table.rs b/server-rs/crates/spacetime-client/src/module_bindings/visual_novel_gallery_view_table.rs index 1b3931275..a1f70563d 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/visual_novel_gallery_view_table.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/visual_novel_gallery_view_table.rs @@ -105,7 +105,7 @@ pub trait visual_novel_gallery_viewQueryTableAccess { #[allow(non_snake_case)] /// Get a query builder for the table `VisualNovelGalleryViewRow`. fn visual_novel_gallery_view(&self) - -> __sdk::__query_builder::Table; + -> __sdk::__query_builder::Table; } impl visual_novel_gallery_viewQueryTableAccess for __sdk::QueryTableAccessor { diff --git a/server-rs/crates/spacetime-client/src/module_bindings/visual_novel_work_profile_table.rs b/server-rs/crates/spacetime-client/src/module_bindings/visual_novel_work_profile_table.rs index 55371a46b..24682e11d 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/visual_novel_work_profile_table.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/visual_novel_work_profile_table.rs @@ -153,7 +153,7 @@ pub trait visual_novel_work_profileQueryTableAccess { #[allow(non_snake_case)] /// Get a query builder for the table `VisualNovelWorkProfileRow`. fn visual_novel_work_profile(&self) - -> __sdk::__query_builder::Table; + -> __sdk::__query_builder::Table; } impl visual_novel_work_profileQueryTableAccess for __sdk::QueryTableAccessor { diff --git a/server-rs/crates/spacetime-client/src/module_bindings/wooden_fish_agent_session_table.rs b/server-rs/crates/spacetime-client/src/module_bindings/wooden_fish_agent_session_table.rs index 2b9e7d583..68f2e4845 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/wooden_fish_agent_session_table.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/wooden_fish_agent_session_table.rs @@ -153,7 +153,7 @@ pub trait wooden_fish_agent_sessionQueryTableAccess { #[allow(non_snake_case)] /// Get a query builder for the table `WoodenFishAgentSessionRow`. fn wooden_fish_agent_session(&self) - -> __sdk::__query_builder::Table; + -> __sdk::__query_builder::Table; } impl wooden_fish_agent_sessionQueryTableAccess for __sdk::QueryTableAccessor { diff --git a/server-rs/crates/spacetime-client/src/runtime.rs b/server-rs/crates/spacetime-client/src/runtime.rs index 8678fe6ec..cc416f137 100644 --- a/server-rs/crates/spacetime-client/src/runtime.rs +++ b/server-rs/crates/spacetime-client/src/runtime.rs @@ -633,6 +633,107 @@ impl SpacetimeClient { .await } + pub async fn claim_profile_recharge_order_expiration_schedules( + &self, + worker_id: String, + now_micros: i64, + lease_expires_at_micros: i64, + limit: u32, + ) -> Result< + Vec, + SpacetimeClientError, + > { + let procedure_input = build_runtime_profile_recharge_order_expiration_claim_input( + worker_id, + now_micros, + lease_expires_at_micros, + limit, + ) + .map_err(SpacetimeClientError::validation_failed)? + .into(); + + self.call_after_connect( + "claim_profile_recharge_order_expiration_schedule_and_return", + move |connection, sender| { + connection + .procedures() + .claim_profile_recharge_order_expiration_schedule_and_return_then( + procedure_input, + move |_, result| { + let mapped = result.map_err(SpacetimeClientError::from_sdk_error).and_then( + map_runtime_profile_recharge_order_expiration_claim_procedure_result, + ); + send_once(&sender, mapped); + }, + ); + }, + ) + .await + } + + pub async fn complete_profile_recharge_order_expiration_schedule( + &self, + order_id: String, + ) -> Result<(), SpacetimeClientError> { + let procedure_input = + build_runtime_profile_recharge_order_expiration_complete_input(order_id) + .map_err(SpacetimeClientError::validation_failed)? + .into(); + + self.call_after_connect( + "complete_profile_recharge_order_expiration_schedule_and_return", + move |connection, sender| { + connection + .procedures() + .complete_profile_recharge_order_expiration_schedule_and_return_then( + procedure_input, + move |_, result| { + let mapped = result.map_err(SpacetimeClientError::from_sdk_error).and_then( + map_runtime_profile_recharge_order_expiration_complete_procedure_result, + ); + send_once(&sender, mapped); + }, + ); + }, + ) + .await + } + + pub async fn close_profile_recharge_order( + &self, + order_id: String, + closed_at_micros: i64, + ) -> Result< + ( + RuntimeProfileRechargeCenterRecord, + RuntimeProfileRechargeOrderRecord, + ), + SpacetimeClientError, + > { + let procedure_input = + build_runtime_profile_recharge_order_close_input(order_id, closed_at_micros) + .map_err(SpacetimeClientError::validation_failed)? + .into(); + + self.call_after_connect( + "close_profile_recharge_order_and_return", + move |connection, sender| { + connection + .procedures() + .close_profile_recharge_order_and_return_then( + procedure_input, + move |_, result| { + let mapped = result + .map_err(SpacetimeClientError::from_sdk_error) + .and_then(map_runtime_profile_recharge_order_procedure_result); + send_once(&sender, mapped); + }, + ); + }, + ) + .await + } + pub async fn submit_profile_feedback( &self, user_id: String, diff --git a/server-rs/crates/spacetime-module/src/migration.rs b/server-rs/crates/spacetime-module/src/migration.rs index 6e4ec961e..c3d07769e 100644 --- a/server-rs/crates/spacetime-module/src/migration.rs +++ b/server-rs/crates/spacetime-module/src/migration.rs @@ -211,6 +211,7 @@ macro_rules! migration_tables { profile_membership, profile_recharge_product_config, profile_recharge_order, + profile_recharge_order_expiration_schedule, profile_feedback_submission, profile_save_archive, player_progression, diff --git a/server-rs/crates/spacetime-module/src/runtime/profile.rs b/server-rs/crates/spacetime-module/src/runtime/profile.rs index 492130b3c..3f332ebb5 100644 --- a/server-rs/crates/spacetime-module/src/runtime/profile.rs +++ b/server-rs/crates/spacetime-module/src/runtime/profile.rs @@ -9,6 +9,8 @@ const PROFILE_TASK_SYSTEM_USER_ID: &str = "system:profile-task"; const PROFILE_RECHARGE_PRODUCT_SYSTEM_USER_ID: &str = "system:recharge-product"; const PROFILE_TASK_LOGIN_EVENT_ID_PREFIX: &str = "daily-login"; const PROFILE_TRACKING_PROFILE_MODULE_KEY: &str = "profile"; +const PROFILE_RECHARGE_ORDER_EXPIRATION_CLAIM_LIMIT_DEFAULT: u32 = 20; +const PROFILE_RECHARGE_ORDER_EXPIRATION_CLAIM_LIMIT_MAX: u32 = 50; #[spacetimedb::table(accessor = profile_dashboard_state)] pub struct ProfileDashboardState { @@ -414,6 +416,27 @@ pub struct ProfileRechargeOrder { pub(crate) membership_expires_at: Option, } +#[spacetimedb::table( + accessor = profile_recharge_order_expiration_schedule, + index( + accessor = by_profile_recharge_order_expiration_scheduled_at, + btree(columns = [scheduled_at]) + ) +)] +#[derive(Clone)] +pub struct ProfileRechargeOrderExpirationSchedule { + #[primary_key] + pub(crate) order_id: String, + pub(crate) user_id: String, + pub(crate) scheduled_at: Timestamp, + #[default(None::)] + pub(crate) lease_owner: Option, + #[default(None::)] + pub(crate) lease_expires_at: Option, + pub(crate) created_at: Timestamp, + pub(crate) updated_at: Timestamp, +} + #[spacetimedb::table( accessor = profile_feedback_submission, index(accessor = by_profile_feedback_user_id, btree(columns = [user_id])), @@ -995,6 +1018,66 @@ pub fn mark_profile_recharge_order_paid_and_return( } } +#[spacetimedb::procedure] +pub fn claim_profile_recharge_order_expiration_schedule_and_return( + ctx: &mut ProcedureContext, + input: RuntimeProfileRechargeOrderExpirationClaimInput, +) -> RuntimeProfileRechargeOrderExpirationClaimProcedureResult { + match ctx.try_with_tx(|tx| claim_profile_recharge_order_expiration_schedules(tx, input.clone())) + { + Ok(entries) => RuntimeProfileRechargeOrderExpirationClaimProcedureResult { + ok: true, + entries, + error_message: None, + }, + Err(message) => RuntimeProfileRechargeOrderExpirationClaimProcedureResult { + ok: false, + entries: Vec::new(), + error_message: Some(message), + }, + } +} + +#[spacetimedb::procedure] +pub fn complete_profile_recharge_order_expiration_schedule_and_return( + ctx: &mut ProcedureContext, + input: RuntimeProfileRechargeOrderExpirationCompleteInput, +) -> RuntimeProfileRechargeOrderExpirationCompleteProcedureResult { + match ctx + .try_with_tx(|tx| complete_profile_recharge_order_expiration_schedule(tx, input.clone())) + { + Ok(()) => RuntimeProfileRechargeOrderExpirationCompleteProcedureResult { + ok: true, + error_message: None, + }, + Err(message) => RuntimeProfileRechargeOrderExpirationCompleteProcedureResult { + ok: false, + error_message: Some(message), + }, + } +} + +#[spacetimedb::procedure] +pub fn close_profile_recharge_order_and_return( + ctx: &mut ProcedureContext, + input: RuntimeProfileRechargeOrderCloseInput, +) -> RuntimeProfileRechargeCenterProcedureResult { + match ctx.try_with_tx(|tx| close_profile_recharge_order_record(tx, input.clone())) { + Ok((record, order)) => RuntimeProfileRechargeCenterProcedureResult { + ok: true, + record: Some(record), + order: Some(order), + error_message: None, + }, + Err(message) => RuntimeProfileRechargeCenterProcedureResult { + ok: false, + record: None, + order: None, + error_message: Some(message), + }, + } +} + #[spacetimedb::procedure] pub fn submit_profile_feedback_and_return( ctx: &mut ProcedureContext, @@ -2172,7 +2255,24 @@ fn create_profile_recharge_order_record( points_delta, membership_expires_at, }; - ctx.db.profile_recharge_order().insert(order); + ctx.db.profile_recharge_order().insert(order.clone()); + if order.status == RuntimeProfileRechargeOrderStatus::Pending + && should_schedule_profile_recharge_order_expiration(&order.payment_channel) + { + let scheduled_at = created_at + + std::time::Duration::from_secs(PROFILE_RECHARGE_ORDER_EXPIRATION_SECONDS as u64); + ctx.db.profile_recharge_order_expiration_schedule().insert( + ProfileRechargeOrderExpirationSchedule { + order_id: order.order_id.clone(), + user_id: order.user_id.clone(), + scheduled_at, + lease_owner: None, + lease_expires_at: None, + created_at, + updated_at: created_at, + }, + ); + } let latest_order = latest_profile_recharge_order(ctx, &validated_input.user_id) .ok_or_else(|| "profile_recharge_order 写入后未能读取".to_string())?; @@ -2231,6 +2331,7 @@ fn mark_profile_recharge_order_paid_record( .ok_or_else(|| "profile_recharge_order 不存在".to_string())?; if order.status == RuntimeProfileRechargeOrderStatus::Paid { + delete_profile_recharge_order_expiration_schedule(ctx, &order.order_id); return Ok(( build_profile_recharge_center_snapshot(ctx, &order.user_id), build_profile_recharge_order_snapshot_from_row(&order), @@ -2261,6 +2362,7 @@ fn mark_profile_recharge_order_paid_record( order.points_delta = points_delta; order.membership_expires_at = membership_expires_at; ctx.db.profile_recharge_order().insert(order.clone()); + delete_profile_recharge_order_expiration_schedule(ctx, &order.order_id); Ok(( build_profile_recharge_center_snapshot(ctx, &order.user_id), @@ -2268,6 +2370,136 @@ fn mark_profile_recharge_order_paid_record( )) } +fn claim_profile_recharge_order_expiration_schedules( + ctx: &ReducerContext, + input: RuntimeProfileRechargeOrderExpirationClaimInput, +) -> Result, String> { + let validated_input = build_runtime_profile_recharge_order_expiration_claim_input( + input.worker_id, + input.now_micros, + input.lease_expires_at_micros, + input.limit, + ) + .map_err(|error| error.to_string())?; + let now = Timestamp::from_micros_since_unix_epoch(validated_input.now_micros); + let lease_expires_at = + Timestamp::from_micros_since_unix_epoch(validated_input.lease_expires_at_micros); + let limit = if validated_input.limit == 0 { + PROFILE_RECHARGE_ORDER_EXPIRATION_CLAIM_LIMIT_DEFAULT + } else { + validated_input + .limit + .min(PROFILE_RECHARGE_ORDER_EXPIRATION_CLAIM_LIMIT_MAX) + } as usize; + + let mut candidates = ctx + .db + .profile_recharge_order_expiration_schedule() + .iter() + .filter(|row| { + row.scheduled_at <= now + && row + .lease_expires_at + .map(|value| value <= now) + .unwrap_or(true) + }) + .collect::>(); + candidates.sort_by_key(|row| row.scheduled_at.to_micros_since_unix_epoch()); + + let mut claimed = Vec::new(); + for mut schedule in candidates.into_iter().take(limit) { + let should_claim = ctx + .db + .profile_recharge_order() + .order_id() + .find(&schedule.order_id) + .map(|order| order.status == RuntimeProfileRechargeOrderStatus::Pending) + .unwrap_or(false); + if !should_claim { + delete_profile_recharge_order_expiration_schedule(ctx, &schedule.order_id); + continue; + } + + ctx.db + .profile_recharge_order_expiration_schedule() + .order_id() + .delete(&schedule.order_id); + schedule.lease_owner = Some(validated_input.worker_id.clone()); + schedule.lease_expires_at = Some(lease_expires_at); + schedule.updated_at = now; + ctx.db + .profile_recharge_order_expiration_schedule() + .insert(schedule.clone()); + claimed.push(build_profile_recharge_order_expiration_schedule_snapshot_from_row(&schedule)); + } + + Ok(claimed) +} + +fn complete_profile_recharge_order_expiration_schedule( + ctx: &ReducerContext, + input: RuntimeProfileRechargeOrderExpirationCompleteInput, +) -> Result<(), String> { + let validated_input = + build_runtime_profile_recharge_order_expiration_complete_input(input.order_id) + .map_err(|error| error.to_string())?; + delete_profile_recharge_order_expiration_schedule(ctx, &validated_input.order_id); + Ok(()) +} + +fn close_profile_recharge_order_record( + ctx: &ReducerContext, + input: RuntimeProfileRechargeOrderCloseInput, +) -> Result< + ( + RuntimeProfileRechargeCenterSnapshot, + RuntimeProfileRechargeOrderSnapshot, + ), + String, +> { + let validated_input = + build_runtime_profile_recharge_order_close_input(input.order_id, input.closed_at_micros) + .map_err(|error| error.to_string())?; + let mut order = ctx + .db + .profile_recharge_order() + .order_id() + .find(&validated_input.order_id) + .ok_or_else(|| "profile_recharge_order 不存在".to_string())?; + + if order.status == RuntimeProfileRechargeOrderStatus::Pending { + ctx.db + .profile_recharge_order() + .order_id() + .delete(&order.order_id); + order.status = RuntimeProfileRechargeOrderStatus::Closed; + ctx.db.profile_recharge_order().insert(order.clone()); + } + delete_profile_recharge_order_expiration_schedule(ctx, &order.order_id); + + Ok(( + build_profile_recharge_center_snapshot(ctx, &order.user_id), + build_profile_recharge_order_snapshot_from_row(&order), + )) +} + +fn should_schedule_profile_recharge_order_expiration(payment_channel: &str) -> bool { + matches!( + payment_channel, + PROFILE_RECHARGE_PAYMENT_CHANNEL_WECHAT_MINI_PROGRAM + | PROFILE_RECHARGE_PAYMENT_CHANNEL_WECHAT_H5 + | PROFILE_RECHARGE_PAYMENT_CHANNEL_WECHAT_JSAPI + | PROFILE_RECHARGE_PAYMENT_CHANNEL_WECHAT_NATIVE + ) +} + +fn delete_profile_recharge_order_expiration_schedule(ctx: &ReducerContext, order_id: &str) { + ctx.db + .profile_recharge_order_expiration_schedule() + .order_id() + .delete(&order_id.to_string()); +} + fn apply_profile_recharge_purchase( ctx: &ReducerContext, user_id: &str, @@ -4424,6 +4656,22 @@ fn build_profile_recharge_order_snapshot_from_row( } } +fn build_profile_recharge_order_expiration_schedule_snapshot_from_row( + row: &ProfileRechargeOrderExpirationSchedule, +) -> RuntimeProfileRechargeOrderExpirationScheduleSnapshot { + RuntimeProfileRechargeOrderExpirationScheduleSnapshot { + order_id: row.order_id.clone(), + user_id: row.user_id.clone(), + scheduled_at_micros: row.scheduled_at.to_micros_since_unix_epoch(), + lease_owner: row.lease_owner.clone(), + lease_expires_at_micros: row + .lease_expires_at + .map(|value| value.to_micros_since_unix_epoch()), + created_at_micros: row.created_at.to_micros_since_unix_epoch(), + updated_at_micros: row.updated_at.to_micros_since_unix_epoch(), + } +} + fn build_profile_feedback_submission_snapshot_from_row( row: &ProfileFeedbackSubmission, ) -> RuntimeProfileFeedbackSubmissionSnapshot { diff --git a/src/components/platform-entry/PlatformProfileRechargeModal.test.tsx b/src/components/platform-entry/PlatformProfileRechargeModal.test.tsx index a4ebc9383..1a12a823a 100644 --- a/src/components/platform-entry/PlatformProfileRechargeModal.test.tsx +++ b/src/components/platform-entry/PlatformProfileRechargeModal.test.tsx @@ -1,11 +1,17 @@ /* @vitest-environment jsdom */ -import { render, screen } from '@testing-library/react'; +import { render, screen, within } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; import { describe, expect, test, vi } from 'vitest'; import { PlatformProfileRechargeModal } from './PlatformProfileRechargeModal'; +vi.mock('qrcode', () => ({ + default: { + toDataURL: vi.fn(async () => 'data:image/png;base64,wechat-native-qr'), + }, +})); + describe('PlatformProfileRechargeModal', () => { test('renders point products and forwards buy action', async () => { const user = userEvent.setup(); @@ -51,6 +57,7 @@ describe('PlatformProfileRechargeModal', () => { onRetry={vi.fn()} onBuy={onBuy} onConfirmNativePayment={vi.fn()} + onCloseNativePayment={vi.fn()} />, ); @@ -92,6 +99,7 @@ describe('PlatformProfileRechargeModal', () => { onRetry={vi.fn()} onBuy={vi.fn()} onConfirmNativePayment={vi.fn()} + onCloseNativePayment={vi.fn()} />, ); @@ -129,6 +137,7 @@ describe('PlatformProfileRechargeModal', () => { onRetry={vi.fn()} onBuy={vi.fn()} onConfirmNativePayment={vi.fn()} + onCloseNativePayment={vi.fn()} />, ); @@ -145,4 +154,80 @@ describe('PlatformProfileRechargeModal', () => { expect(onTabChange).toHaveBeenCalledWith('membership'); }); + + test('opens native payment QR code in a separate dialog', async () => { + const user = userEvent.setup(); + const onConfirmNativePayment = vi.fn(); + const onCloseNativePayment = vi.fn(); + + render( + , + ); + + const rechargeDialog = screen.getByRole('dialog', { name: '账户充值' }); + const paymentDialog = screen.getByRole('dialog', { + name: '微信扫码支付', + }); + + expect( + within(rechargeDialog).queryByAltText('微信 Native 支付二维码'), + ).toBeNull(); + expect( + await within(paymentDialog).findByAltText('微信 Native 支付二维码'), + ).toBeTruthy(); + expect(within(paymentDialog).getByText('100泥点')).toBeTruthy(); + expect(within(paymentDialog).getByText('¥10')).toBeTruthy(); + expect( + within(paymentDialog).getByText( + '暂未确认到账,请确认付款完成后再点一次。', + ), + ).toBeTruthy(); + + await user.click( + within(paymentDialog).getByRole('button', { name: '我已支付' }), + ); + expect(onConfirmNativePayment).toHaveBeenCalledTimes(1); + + await user.click( + within(paymentDialog).getByRole('button', { + name: '关闭微信扫码支付', + }), + ); + expect(onCloseNativePayment).toHaveBeenCalledTimes(1); + }); }); diff --git a/src/components/platform-entry/PlatformProfileRechargeModal.tsx b/src/components/platform-entry/PlatformProfileRechargeModal.tsx index 6dc341417..57b723235 100644 --- a/src/components/platform-entry/PlatformProfileRechargeModal.tsx +++ b/src/components/platform-entry/PlatformProfileRechargeModal.tsx @@ -43,6 +43,7 @@ export type PlatformProfileRechargeModalProps = { onRetry: () => void; onBuy: (product: ProfileRechargeProduct) => void; onConfirmNativePayment: () => void; + onCloseNativePayment: () => void; }; /** @@ -78,6 +79,37 @@ function useWechatNativeQrCode(codeUrl: string | null) { return qrImageUrl; } +function formatNativePaymentRemaining(remainingMs: number) { + const totalSeconds = Math.max(0, Math.ceil(remainingMs / 1000)); + const minutes = Math.floor(totalSeconds / 60); + const seconds = totalSeconds % 60; + return `${minutes}:${seconds.toString().padStart(2, '0')}`; +} + +function useNativePaymentRemaining(expiresAt: string) { + const resolveRemainingMs = () => { + const expiresAtMs = Date.parse(expiresAt); + if (!Number.isFinite(expiresAtMs)) { + return 0; + } + return Math.max(0, expiresAtMs - Date.now()); + }; + const [remainingMs, setRemainingMs] = useState(resolveRemainingMs); + + useEffect(() => { + setRemainingMs(resolveRemainingMs()); + const timer = window.setInterval(() => { + setRemainingMs(resolveRemainingMs()); + }, 1000); + return () => window.clearInterval(timer); + }, [expiresAt]); + + return { + isExpired: remainingMs <= 0, + label: formatNativePaymentRemaining(remainingMs), + }; +} + /** * 充值套餐卡片,沿用 RPG 首页当前视觉和交互语义。 */ @@ -133,6 +165,82 @@ function RechargeProductCard({ ); } +function PlatformProfileWechatNativePaymentModal({ + nativePayment, + nativeQrImageUrl, + onClose, + onConfirm, +}: { + nativePayment: NativeWechatPaymentState; + nativeQrImageUrl: string | null; + onClose: () => void; + onConfirm: () => void; +}) { + const remaining = useNativePaymentRemaining(nativePayment.expiresAt); + + return ( + +
+
+
+ 支付项目 +
+
+ {nativePayment.productTitle} +
+
+ 支付金额 +
+
+ {formatRechargePrice(nativePayment.amountCents)} +
+
+ 剩余时间 + + {remaining.isExpired ? '已过期' : remaining.label} + +
+
+
+ {nativeQrImageUrl ? ( + 微信 Native 支付二维码 + ) : ( + 生成中 + )} +
+ + {nativePayment.isConfirming ? '确认中' : '我已支付'} + + {nativePayment.confirmMessage ? ( +
+ {nativePayment.confirmMessage} +
+ ) : null} +
+
+ ); +} + /** * 个人中心充值弹窗,共享给不同入口复用,但保持现有 props 与文案不变。 */ @@ -148,6 +256,7 @@ export function PlatformProfileRechargeModal({ onRetry, onBuy, onConfirmNativePayment, + onCloseNativePayment, }: PlatformProfileRechargeModalProps) { const nativeQrImageUrl = useWechatNativeQrCode( nativePayment?.codeUrl ?? null, @@ -162,109 +271,86 @@ export function PlatformProfileRechargeModal({ ); return ( - - + <> + + - -
{error}
- - 重新加载 - - - ) : null - } - isLoading={isLoading} - loadingState={ - - } - isEmpty={products.length === 0} - emptyState={ - - 暂无可购买套餐 - - } - > -
- {products.map((product) => ( - {error}
+ + 重新加载 + + + ) : null + } + isLoading={isLoading} + loadingState={ + - ))} -
- - - {nativePayment ? ( - + 暂无可购买套餐 + + } > -
微信扫码支付
-
- {nativeQrImageUrl ? ( - 微信 Native 支付二维码 + {products.map((product) => ( + - ) : ( - - 生成中 - - )} + ))}
- - {nativePayment.isConfirming ? '确认中' : '我已支付'} - -
+ + + {nativePayment ? ( + ) : null} - + ); } diff --git a/src/components/platform-entry/usePlatformProfileCenterController.ts b/src/components/platform-entry/usePlatformProfileCenterController.ts index d1aebdf87..0684699af 100644 --- a/src/components/platform-entry/usePlatformProfileCenterController.ts +++ b/src/components/platform-entry/usePlatformProfileCenterController.ts @@ -11,15 +11,17 @@ import { type WechatNativePayment, } from '../../../packages/shared/src/contracts/runtime'; import { refreshStoredAccessToken } from '../../services/apiClient'; -import type { AuthUser } from '../../services/authService'; +import { startWechatBind, type AuthUser } from '../../services/authService'; import { requestHostPayment } from '../../services/host-bridge/hostBridge'; import { resolveProfileRechargeProductPaymentChannel, WECHAT_H5_PAYMENT_CHANNEL, + WECHAT_JSAPI_PAYMENT_CHANNEL, WECHAT_MINI_PROGRAM_VIRTUAL_PAYMENT_CHANNEL, WECHAT_NATIVE_PAYMENT_CHANNEL, } from '../../services/payment/paymentPlatform'; import { redirectToPaymentUrl } from '../../services/payment/paymentRedirect'; +import { requestWechatJsapiPayment } from '../../services/payment/wechatJsapiPayment'; import { claimRpgProfileTaskReward, confirmWechatRpgProfileRechargeOrder, @@ -41,9 +43,11 @@ const PROFILE_TASK_DAY_MS = 24 * 60 * 60 * 1000; const PROFILE_TASK_BEIJING_OFFSET_MS = 8 * 60 * 60 * 1000; const PROFILE_TASK_MIN_RESET_DELAY_MS = 1000; const PROFILE_INVITE_QUERY_KEYS = ['inviteCode', 'invite_code'] as const; +const WECHAT_NATIVE_CONFIRM_RETRY_DELAYS_MS = [800, 1600] as const; const WECHAT_PAY_CONFIRM_RETRY_DELAYS_MS = [800, 1600, 3000] as const; const WECHAT_PAY_RESULT_RECHECK_INTERVAL_MS = 250; const WECHAT_PAY_RESULT_RECHECK_TIMEOUT_MS = 10000; +const WECHAT_JSAPI_MISSING_IDENTITY_TEXT = '缺少微信'; export type ProfileReferralPanel = 'invite' | 'redeem' | 'community'; export type ProfilePopupPanel = ProfileReferralPanel; @@ -70,9 +74,19 @@ export type WechatRechargeOrderConfirmationState = { export type NativeWechatPaymentState = WechatNativePayment & { orderId: string; + productTitle: string; + amountCents: number; isConfirming: boolean; + confirmMessage?: string; }; +function isWechatJsapiMissingIdentityError(error: unknown) { + return ( + error instanceof Error && + error.message.includes(WECHAT_JSAPI_MISSING_IDENTITY_TEXT) + ); +} + type UsePlatformProfileCenterControllerArgs = { activeTab: string; isAuthenticated: boolean; @@ -196,6 +210,26 @@ async function confirmWechatRechargeOrderUntilSettled( } } +async function confirmWechatRechargeOrderQuickly( + orderId: string, +): Promise { + let latestResponse = await confirmWechatRpgProfileRechargeOrder(orderId); + if (latestResponse.order.status !== 'pending') { + return latestResponse; + } + + for (const delayMs of WECHAT_NATIVE_CONFIRM_RETRY_DELAYS_MS) { + await waitWechatPayConfirmDelay(delayMs); + + latestResponse = await confirmWechatRpgProfileRechargeOrder(orderId); + if (latestResponse.order.status !== 'pending') { + return latestResponse; + } + } + + return latestResponse; +} + export function usePlatformProfileCenterController({ activeTab, isAuthenticated, @@ -432,6 +466,10 @@ export function usePlatformProfileCenterController({ ); const confirmPendingWechatRechargeOrder = useCallback(() => { + if (nativeWechatPayment) { + return false; + } + const orderId = pendingWechatRechargeOrderIdRef.current; if (!orderId || confirmingWechatRechargeOrderIdRef.current === orderId) { return false; @@ -475,7 +513,7 @@ export function usePlatformProfileCenterController({ }); }); return true; - }, [onRechargeSuccess]); + }, [nativeWechatPayment, onRechargeSuccess]); const openRechargeModal = useCallback(() => { if (!currentUser) { @@ -502,6 +540,16 @@ export function usePlatformProfileCenterController({ openRewardCodeModal(); }, [openRechargeModal, openRewardCodeModal, showRechargeEntry]); + const closeNativeWechatPayment = useCallback(() => { + setNativeWechatPayment((current) => { + if (current?.isConfirming) { + return current; + } + pendingWechatRechargeOrderIdRef.current = null; + return null; + }); + }, []); + const buyRechargeProduct = useCallback( (product: ProfileRechargeProduct) => { if (submittingRechargeProductId) { @@ -531,6 +579,53 @@ export function usePlatformProfileCenterController({ } return; } + if (paymentChannel === WECHAT_JSAPI_PAYMENT_CHANNEL) { + pendingWechatRechargeOrderIdRef.current = response.order.orderId; + setRechargeCenter(response.center); + setRechargePaymentResult({ + kind: 'pending', + title: '正在打开微信支付', + message: '请在微信支付面板中完成支付。', + }); + await requestWechatJsapiPayment( + response.wechatMiniProgramPayParams, + ); + setRechargePaymentResult({ + kind: 'pending', + title: '支付处理中', + message: '正在查询微信支付到账状态。', + }); + void confirmWechatRechargeOrderUntilSettled(response.order.orderId) + .then((confirmResponse) => { + const isPaid = confirmResponse.order.status === 'paid'; + setRechargeCenter(confirmResponse.center); + setRechargePaymentResult( + isPaid + ? { + kind: 'success', + title: '支付成功', + message: '已到账,账户状态已刷新。', + } + : { + kind: 'pending', + title: '等待微信确认', + message: '暂时没能确认到账状态,请稍后再试。', + }, + ); + if (isPaid) { + pendingWechatRechargeOrderIdRef.current = null; + void onRechargeSuccess?.(); + } + }) + .catch(() => { + setRechargePaymentResult({ + kind: 'pending', + title: '等待微信确认', + message: '暂时没能确认到账状态,请稍后再试。', + }); + }); + return; + } if (paymentChannel === WECHAT_H5_PAYMENT_CHANNEL) { const h5Url = response.wechatH5Payment?.h5Url?.trim(); if (!h5Url) { @@ -549,13 +644,16 @@ export function usePlatformProfileCenterController({ if (paymentChannel === WECHAT_NATIVE_PAYMENT_CHANNEL) { const codeUrl = response.wechatNativePayment?.codeUrl?.trim(); if (!codeUrl) { - throw new Error('微信 Native 支付二维码生成失败'); + throw new Error('微信 Native 支付链接生成失败'); } pendingWechatRechargeOrderIdRef.current = response.order.orderId; setRechargeCenter(response.center); setNativeWechatPayment({ - orderId: response.order.orderId, + ...response.wechatNativePayment, codeUrl, + orderId: response.order.orderId, + productTitle: response.order.productTitle, + amountCents: response.order.amountCents, isConfirming: false, }); setSubmittingRechargeProductId(null); @@ -567,11 +665,31 @@ export function usePlatformProfileCenterController({ .catch((error: unknown) => { pendingWechatRechargeOrderIdRef.current = null; setNativeWechatPayment(null); + if ( + paymentChannel === WECHAT_JSAPI_PAYMENT_CHANNEL && + isWechatJsapiMissingIdentityError(error) + ) { + setSubmittingRechargeProductId(null); + setRechargePaymentResult({ + kind: 'pending', + title: '需要微信授权', + message: '正在跳转微信授权,授权后请重新发起支付。', + }); + void startWechatBind().catch((wechatLoginError: unknown) => { + setRechargePaymentResult(null); + setRechargeError( + wechatLoginError instanceof Error + ? wechatLoginError.message + : '微信授权暂不可用,请稍后再试', + ); + }); + return; + } setRechargeError(error instanceof Error ? error.message : '充值失败'); setSubmittingRechargeProductId(null); }); }, - [submittingRechargeProductId], + [onRechargeSuccess, submittingRechargeProductId], ); const confirmNativeWechatPayment = useCallback(() => { @@ -581,52 +699,42 @@ export function usePlatformProfileCenterController({ setNativeWechatPayment((current) => current && current.orderId === nativeWechatPayment.orderId - ? { ...current, isConfirming: true } + ? { ...current, isConfirming: true, confirmMessage: undefined } : current, ); - setRechargePaymentResult({ - kind: 'pending', - title: '正在确认支付', - message: '正在查询微信支付到账状态。', - }); - void confirmWechatRechargeOrderUntilSettled(nativeWechatPayment.orderId) + void confirmWechatRechargeOrderQuickly(nativeWechatPayment.orderId) .then((response) => { const isPaid = response.order.status === 'paid'; setRechargeCenter(response.center); - setRechargePaymentResult( - isPaid - ? { - kind: 'success', - title: '支付成功', - message: '已到账,账户状态已刷新。', - } - : { - kind: 'pending', - title: '等待微信确认', - message: '暂时没能确认到账状态,请稍后再试。', - }, - ); if (isPaid) { setNativeWechatPayment(null); pendingWechatRechargeOrderIdRef.current = null; + setRechargePaymentResult({ + kind: 'success', + title: '支付成功', + message: '已到账,账户状态已刷新。', + }); void onRechargeSuccess?.(); } else { setNativeWechatPayment((current) => current && current.orderId === nativeWechatPayment.orderId - ? { ...current, isConfirming: false } + ? { + ...current, + isConfirming: false, + confirmMessage: '暂未确认到账,请确认付款完成后再点一次。', + } : current, ); } }) .catch(() => { - setRechargePaymentResult({ - kind: 'pending', - title: '等待微信确认', - message: '暂时没能确认到账状态,请稍后再试。', - }); setNativeWechatPayment((current) => current && current.orderId === nativeWechatPayment.orderId - ? { ...current, isConfirming: false } + ? { + ...current, + isConfirming: false, + confirmMessage: '暂时没能确认到账状态,请稍后再试。', + } : current, ); }) @@ -926,6 +1034,7 @@ export function usePlatformProfileCenterController({ activeRechargeTab, claimTaskReward, claimingTaskId, + closeNativeWechatPayment, closeProfilePopupPanel, confirmNativeWechatPayment, inviteCopyState: inviteCopyState as CopyFeedbackState, diff --git a/src/components/rpg-entry/RpgEntryHomeView.recharge.test.tsx b/src/components/rpg-entry/RpgEntryHomeView.recharge.test.tsx index 7ac2c3853..ffaad442d 100644 --- a/src/components/rpg-entry/RpgEntryHomeView.recharge.test.tsx +++ b/src/components/rpg-entry/RpgEntryHomeView.recharge.test.tsx @@ -44,6 +44,7 @@ import { const { mockQrCodeToDataUrl, mockRedirectToPaymentUrl, + mockRequestWechatJsapiPayment, mockBuildReferralCenter, mockBuildTaskCenter, mockClaimRpgProfileTaskReward, @@ -61,6 +62,7 @@ const { } = vi.hoisted(() => { const qrCodeToDataUrl = vi.fn(async () => 'data:image/png;base64,QR'); const redirectToPaymentUrl = vi.fn(); + const requestWechatJsapiPayment = vi.fn(async () => undefined); const buildReferralCenter = ( overrides: Partial = {}, ): ProfileReferralInviteCenterResponse => ({ @@ -134,6 +136,7 @@ const { return { mockQrCodeToDataUrl: qrCodeToDataUrl, mockRedirectToPaymentUrl: redirectToPaymentUrl, + mockRequestWechatJsapiPayment: requestWechatJsapiPayment, mockBuildReferralCenter: buildReferralCenter, mockBuildTaskCenter: buildTaskCenter, mockGetRpgProfileReferralInviteCenter: vi.fn(async () => @@ -411,6 +414,8 @@ const { mockUpdateAuthProfile: vi.fn(), })); +const mockStartWechatBind = vi.hoisted(() => vi.fn(async () => undefined)); + vi.mock('../../services/apiClient', () => ({ BACKGROUND_AUTH_REQUEST_OPTIONS: {}, refreshStoredAccessToken: mockRefreshStoredAccessToken, @@ -420,6 +425,7 @@ vi.mock('../../services/apiClient', () => ({ vi.mock('../../services/authService', () => ({ getPublicAuthUserByCode: mockGetPublicAuthUserByCode, getPublicAuthUserById: mockGetPublicAuthUserById, + startWechatBind: mockStartWechatBind, updateAuthProfile: mockUpdateAuthProfile, })); @@ -433,6 +439,10 @@ vi.mock('../../services/payment/paymentRedirect', () => ({ redirectToPaymentUrl: mockRedirectToPaymentUrl, })); +vi.mock('../../services/payment/wechatJsapiPayment', () => ({ + requestWechatJsapiPayment: mockRequestWechatJsapiPayment, +})); + mockUpdateAuthProfile.mockResolvedValue({ id: 'user-1', publicUserCode: '100001', @@ -1304,6 +1314,7 @@ afterEach(() => { }); mockQrCodeToDataUrl.mockResolvedValue('data:image/png;base64,QR'); mockRedirectToPaymentUrl.mockReset(); + mockRequestWechatJsapiPayment.mockResolvedValue(undefined); Object.defineProperty(window, 'matchMedia', { configurable: true, writable: true, @@ -1366,7 +1377,7 @@ test('opens wallet ledger modal from narrative coin card', async () => { test('profile recharge modal shows native qr code on desktop web by default', async () => { const user = userEvent.setup(); - mockWechatDesktopLayout(); + mockDesktopLayout(); mockCreateRpgProfileRechargeOrder.mockResolvedValueOnce({ order: { orderId: 'order-native-1', @@ -1399,6 +1410,7 @@ test('profile recharge modal shows native qr code on desktop web by default', as }, wechatNativePayment: { codeUrl: 'weixin://pay.weixin.qq.com/bizpayurl/up?pr=native-test', + expiresAt: '2099-01-01T00:05:00Z', }, }); @@ -1418,34 +1430,30 @@ test('profile recharge modal shows native qr code on desktop web by default', as 'wechat_native', ); }); - const nativePaymentTitle = await screen.findByText('微信扫码支付'); - const nativePaymentPanel = nativePaymentTitle.closest( - '.platform-subpanel', - ) as HTMLElement; - expect(nativePaymentPanel.className).toContain('rounded-[1rem]'); - expect(nativePaymentPanel.className).toContain('p-4'); await waitFor(() => { + expect(screen.getAllByRole('dialog').length).toBeGreaterThanOrEqual(2); expect(screen.getByAltText('微信 Native 支付二维码')).toBeTruthy(); }); expect(mockQrCodeToDataUrl).toHaveBeenCalledWith( 'weixin://pay.weixin.qq.com/bizpayurl/up?pr=native-test', expect.objectContaining({ width: 180 }), ); + expect(mockRedirectToPaymentUrl).not.toHaveBeenCalled(); expect(screen.queryByRole('dialog', { name: '支付成功' })).toBeNull(); }); -test('profile recharge modal jumps to h5 payment on mobile web by default', async () => { +test('profile recharge modal uses native payment inside wechat browser before open platform is connected', async () => { const user = userEvent.setup(); mockWechatMobileLayout(); mockCreateRpgProfileRechargeOrder.mockResolvedValueOnce({ order: { - orderId: 'order-h5-1', + orderId: 'order-wechat-native-1', productId: 'points_60', productTitle: '60泥点', kind: 'points', amountCents: 600, status: 'pending' as const, - paymentChannel: 'wechat_h5', + paymentChannel: 'wechat_native', createdAt: '2026-04-25T10:00:00Z', paidAt: null, providerTransactionId: null, @@ -1467,9 +1475,9 @@ test('profile recharge modal jumps to h5 payment on mobile web by default', asyn latestOrder: null, hasPointsRecharged: false, }, - wechatH5Payment: { - h5Url: - 'https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?prepay_id=wx-h5', + wechatNativePayment: { + codeUrl: 'weixin://pay.weixin.qq.com/bizpayurl/up?pr=wechat-native', + expiresAt: '2099-01-01T00:05:00Z', }, }); @@ -1483,21 +1491,141 @@ test('profile recharge modal jumps to h5 payment on mobile web by default', asyn await waitFor(() => { expect(mockCreateRpgProfileRechargeOrder).toHaveBeenCalledWith( 'points_60', - 'wechat_h5', + 'wechat_native', ); }); - expect(mockRedirectToPaymentUrl).toHaveBeenCalledWith( - 'https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?prepay_id=wx-h5', + expect(mockRedirectToPaymentUrl).not.toHaveBeenCalled(); + expect(mockRequestWechatJsapiPayment).not.toHaveBeenCalled(); + expect(mockStartWechatBind).not.toHaveBeenCalled(); + expect(screen.getByAltText('微信 Native 支付二维码')).toBeTruthy(); +}); + +test('profile recharge does not start wechat oauth inside wechat browser while native fallback is active', async () => { + const user = userEvent.setup(); + mockWechatMobileLayout(); + mockCreateRpgProfileRechargeOrder.mockResolvedValueOnce({ + order: { + orderId: 'order-wechat-native-oauth-free', + productId: 'points_60', + productTitle: '60泥点', + kind: 'points', + amountCents: 600, + status: 'pending' as const, + paymentChannel: 'wechat_native', + createdAt: '2026-04-25T10:00:00Z', + paidAt: null, + providerTransactionId: null, + pointsDelta: 0, + membershipExpiresAt: null, + }, + center: { + walletBalance: 0, + membership: { + status: 'normal', + tier: 'normal', + startedAt: null, + expiresAt: null, + updatedAt: null, + }, + pointProducts: [], + membershipProducts: [], + benefits: [], + latestOrder: null, + hasPointsRecharged: false, + }, + wechatNativePayment: { + codeUrl: + 'weixin://pay.weixin.qq.com/bizpayurl/up?pr=wechat-native-oauth-free', + expiresAt: '2099-01-01T00:05:00Z', + }, + }); + + renderProfileView(); + const shortcutRegion = screen.getByRole('region', { + name: '\u5e38\u7528\u529f\u80fd', + }); + const rechargeButton = within(shortcutRegion) + .getAllByRole('button') + .find((button) => button.textContent?.includes('\u5145')); + expect(rechargeButton).toBeTruthy(); + await user.click(rechargeButton!); + const productButton = (await screen.findAllByRole('button')).find((button) => + button.textContent?.includes('60'), ); - expect( - await screen.findByRole('dialog', { name: '正在打开微信支付' }), - ).toBeTruthy(); + expect(productButton).toBeTruthy(); + await user.click(productButton!); + + await waitFor(() => { + expect(mockCreateRpgProfileRechargeOrder).toHaveBeenCalledWith( + 'points_60', + 'wechat_native', + ); + }); + expect(mockRedirectToPaymentUrl).not.toHaveBeenCalled(); + expect(mockStartWechatBind).not.toHaveBeenCalled(); + expect(mockRequestWechatJsapiPayment).not.toHaveBeenCalled(); +}); + +test('profile native payment keeps qr dialog on mobile web without opening native link', async () => { + const user = userEvent.setup(); + const onRechargeSuccess = vi.fn(); + mockNarrowMobileLayout(); + mockCreateRpgProfileRechargeOrder.mockResolvedValueOnce({ + order: { + orderId: 'order-native-resume', + productId: 'points_60', + productTitle: 'points 60', + kind: 'points', + amountCents: 600, + status: 'pending' as const, + paymentChannel: 'wechat_native', + createdAt: '2026-04-25T10:00:00Z', + paidAt: null, + providerTransactionId: null, + pointsDelta: 0, + membershipExpiresAt: null, + }, + center: { + walletBalance: 0, + membership: { + status: 'normal', + tier: 'normal', + startedAt: null, + expiresAt: null, + updatedAt: null, + }, + pointProducts: [], + membershipProducts: [], + benefits: [], + latestOrder: null, + hasPointsRecharged: false, + }, + wechatNativePayment: { + codeUrl: 'weixin://pay.weixin.qq.com/bizpayurl/up?pr=native-resume', + expiresAt: '2099-01-01T00:05:00Z', + }, + }); + renderProfileView(onRechargeSuccess); + await openRechargeModal(user); + await user.click(await screen.findByRole('button', { name: /60/u })); + await waitFor(() => { + expect(screen.getAllByRole('dialog').length).toBeGreaterThanOrEqual(2); + expect(screen.getByAltText('微信 Native 支付二维码')).toBeTruthy(); + }); + expect(mockQrCodeToDataUrl).toHaveBeenCalledWith( + 'weixin://pay.weixin.qq.com/bizpayurl/up?pr=native-resume', + expect.objectContaining({ width: 180 }), + ); + expect(mockRedirectToPaymentUrl).not.toHaveBeenCalled(); + expect(mockConfirmWechatRpgProfileRechargeOrder).not.toHaveBeenCalled(); expect(screen.queryByRole('dialog', { name: '支付成功' })).toBeNull(); + expect(onRechargeSuccess).not.toHaveBeenCalled(); + expect(mockWatchWechatRpgProfileRechargeOrder).not.toHaveBeenCalled(); }); test('profile recharge modal trusts per-product first bonus display after points recharge', async () => { const user = userEvent.setup(); - mockWechatDesktopLayout(); + mockDesktopLayout(); mockGetRpgProfileRechargeCenter.mockResolvedValueOnce({ walletBalance: 60, membership: { @@ -2552,7 +2680,7 @@ test('profile recharge modal releases submitting state after cancelled wechat pa test('profile native qr confirmation refreshes only after server reports paid', async () => { const user = userEvent.setup(); const onRechargeSuccess = vi.fn(); - mockWechatDesktopLayout(); + mockDesktopLayout(); mockCreateRpgProfileRechargeOrder.mockResolvedValueOnce({ order: { orderId: 'order-native-paid', @@ -2585,6 +2713,7 @@ test('profile native qr confirmation refreshes only after server reports paid', }, wechatNativePayment: { codeUrl: 'weixin://pay.weixin.qq.com/bizpayurl/up?pr=native-paid', + expiresAt: '2099-01-01T00:05:00Z', }, }); mockConfirmWechatRpgProfileRechargeOrder.mockResolvedValueOnce({ @@ -2636,7 +2765,109 @@ test('profile native qr confirmation refreshes only after server reports paid', expect(onRechargeSuccess).toHaveBeenCalledTimes(1); }); -test('non-wechat profile opens reward code from recharge-shaped entry', async () => { +test('profile native qr confirmation keeps qr dialog when payment is still pending', async () => { + const user = userEvent.setup(); + const onRechargeSuccess = vi.fn(); + mockDesktopLayout(); + mockCreateRpgProfileRechargeOrder.mockResolvedValueOnce({ + order: { + orderId: 'order-native-pending', + productId: 'points_60', + productTitle: '60泥点', + kind: 'points', + amountCents: 600, + status: 'pending' as const, + paymentChannel: 'wechat_native', + createdAt: '2026-04-25T10:00:00Z', + paidAt: null, + providerTransactionId: null, + pointsDelta: 0, + membershipExpiresAt: null, + }, + center: { + walletBalance: 0, + membership: { + status: 'normal', + tier: 'normal', + startedAt: null, + expiresAt: null, + updatedAt: null, + }, + pointProducts: [], + membershipProducts: [], + benefits: [], + latestOrder: null, + hasPointsRecharged: false, + }, + wechatNativePayment: { + codeUrl: 'weixin://pay.weixin.qq.com/bizpayurl/up?pr=native-pending', + expiresAt: '2099-01-01T00:05:00Z', + }, + }); + mockConfirmWechatRpgProfileRechargeOrder.mockResolvedValue({ + order: { + orderId: 'order-native-pending', + productId: 'points_60', + productTitle: '60泥点', + kind: 'points', + amountCents: 600, + status: 'pending' as const, + paymentChannel: 'wechat_native', + createdAt: '2026-04-25T10:00:00Z', + paidAt: null, + providerTransactionId: null, + pointsDelta: 0, + membershipExpiresAt: null, + }, + center: { + walletBalance: 0, + membership: { + status: 'normal', + tier: 'normal', + startedAt: null, + expiresAt: null, + updatedAt: null, + }, + pointProducts: [], + membershipProducts: [], + benefits: [], + latestOrder: null, + hasPointsRecharged: false, + }, + }); + + renderProfileView(onRechargeSuccess); + const shortcutRegion = screen.getByRole('region', { name: '常用功能' }); + await user.click( + within(shortcutRegion).getByRole('button', { name: /充值/u }), + ); + await user.click(await screen.findByRole('button', { name: /60泥点/u })); + await user.click(await screen.findByRole('button', { name: '我已支付' })); + + await waitFor( + () => { + expect(mockConfirmWechatRpgProfileRechargeOrder).toHaveBeenCalledTimes(3); + }, + { timeout: 5000 }, + ); + expect( + await screen.findByText( + '暂未确认到账,请确认付款完成后再点一次。', + undefined, + { + timeout: 5000, + }, + ), + ).toBeTruthy(); + const nativePaymentDialog = screen.getByRole('dialog', { + name: '微信扫码支付', + }); + expect(screen.queryByRole('dialog', { name: '支付处理中' })).toBeNull(); + expect(mockWatchWechatRpgProfileRechargeOrder).not.toHaveBeenCalled(); + expect(onRechargeSuccess).not.toHaveBeenCalled(); +}); + +test('web profile opens recharge from recharge-shaped entry', async () => { const user = userEvent.setup(); renderProfileView(); @@ -2651,10 +2882,9 @@ test('non-wechat profile opens reward code from recharge-shaped entry', async () await user.click( within(shortcutRegion).getByRole('button', { name: /泥点充值/u }), ); - const rewardCodeInput = await screen.findByPlaceholderText('输入兑换码'); - expect(rewardCodeInput).toBeTruthy(); - expect(rewardCodeInput.className).toContain('platform-text-field'); - expect(mockGetRpgProfileRechargeCenter).not.toHaveBeenCalled(); + expect(await screen.findByText('账户充值')).toBeTruthy(); + expect(mockGetRpgProfileRechargeCenter).toHaveBeenCalledTimes(1); + expect(screen.queryByPlaceholderText('输入兑换码')).toBeNull(); }); test('profile daily task shortcut reflects task progress and claim updates', async () => { @@ -2975,20 +3205,14 @@ test('profile stats cards are centered without update timestamp', async () => { }); test('profile page shows external generation queue status', async () => { - renderProfileView( - vi.fn(), - {}, - {}, - 0, - { - profileGenerationQueueStatus: { - currentStatus: 'queued', - currentProgress: 18, - pendingCount: 6, - runningCount: 2, - }, + renderProfileView(vi.fn(), {}, {}, 0, { + profileGenerationQueueStatus: { + currentStatus: 'queued', + currentProgress: 18, + pendingCount: 6, + runningCount: 2, }, - ); + }); await screen.findByText('1 / 1'); const queueRegion = screen.getByRole('region', { name: '生成队列' }); @@ -3045,7 +3269,9 @@ test('mobile profile page matches the reference layout sections', async () => { expect(scanButton).toBeTruthy(); expect(settingsButton).toBeTruthy(); expect(scanButton.className).toContain('platform-icon-button'); - expect(scanButton.className).toContain('platform-profile-header__icon-button'); + expect(scanButton.className).toContain( + 'platform-profile-header__icon-button', + ); expect(settingsButton.className).toContain('platform-icon-button'); expect(settingsButton.className).toContain( 'platform-profile-header__icon-button', @@ -3244,7 +3470,9 @@ test('profile scan action opens camera scanner instead of recharge panel', async expect(mockGetRpgProfileRechargeCenter).not.toHaveBeenCalled(); expect(screen.queryByText('账户充值')).toBeNull(); - await user.click(within(qrScannerDialog).getByRole('button', { name: '关闭扫码' })); + await user.click( + within(qrScannerDialog).getByRole('button', { name: '关闭扫码' }), + ); await waitFor(() => { expect(screen.queryByRole('dialog', { name: '扫码' })).toBeNull(); @@ -3452,8 +3680,8 @@ test('profile community shortcut shows reward subtitle and invited users', async expect(screen.getByAltText('玩家社区 QQ 群二维码')).toBeTruthy(); expect(screen.getByText('微信群')).toBeTruthy(); expect(screen.getByText('QQ群')).toBeTruthy(); - const wechatQrCardClassName = screen.getByText('微信群').parentElement - ?.className; + const wechatQrCardClassName = + screen.getByText('微信群').parentElement?.className; expect(wechatQrCardClassName).toContain('bg-white/72'); expect(wechatQrCardClassName).toContain( 'border-[var(--platform-subpanel-border)]', @@ -3472,16 +3700,10 @@ test('profile community shortcut shows reward subtitle and invited users', async test('profile community popup can be opened from external creation entry', async () => { const onConsumed = vi.fn(); - renderProfileView( - vi.fn(), - {}, - {}, - 0, - { - initialProfilePopupPanel: 'community', - onInitialProfilePopupPanelConsumed: onConsumed, - }, - ); + renderProfileView(vi.fn(), {}, {}, 0, { + initialProfilePopupPanel: 'community', + onInitialProfilePopupPanelConsumed: onConsumed, + }); const communityDialog = await screen.findByRole('dialog', { name: '玩家社区', @@ -3896,8 +4118,12 @@ test('desktop nav opens creation home and project gallery from dedicated entries const nav = container.querySelector('.platform-desktop-rail'); expect(nav).toBeTruthy(); - await user.click(within(nav as HTMLElement).getByRole('button', { name: '创作' })); - await user.click(within(nav as HTMLElement).getByRole('button', { name: '项目' })); + await user.click( + within(nav as HTMLElement).getByRole('button', { name: '创作' }), + ); + await user.click( + within(nav as HTMLElement).getByRole('button', { name: '项目' }), + ); expect(onOpenCreateTypePicker).toHaveBeenCalledTimes(1); expect(onOpenProjects).toHaveBeenCalledTimes(1); @@ -3919,9 +4145,7 @@ test('desktop recommend page reuses compact workbench chrome', () => { expect(topbar).toBeTruthy(); expect(leftbar?.querySelector('.creation-home-brand-lockup')).toBeTruthy(); expect( - leftbar - ?.querySelector('.platform-brand-logo__image') - ?.getAttribute('src'), + leftbar?.querySelector('.platform-brand-logo__image')?.getAttribute('src'), ).toBe('/branding/taonier-product-ip.png'); expect(topbar?.querySelector('.creation-home-brand-lockup')).toBeNull(); expect( @@ -4052,12 +4276,16 @@ test('logged in create tab shows real wallet balance beside the brand', () => { name: /^1,234泥点$/u, }); - expect(walletButton.className).toContain('platform-mobile-create-wallet-chip'); - expect(walletButton.className).toContain('platform-action-button--accent-soft'); + expect(walletButton.className).toContain( + 'platform-mobile-create-wallet-chip', + ); + expect(walletButton.className).toContain( + 'platform-action-button--accent-soft', + ); expect(walletButton.querySelector('.platform-icon-badge')).toBeTruthy(); }); -test('create tab wallet chip opens reward code when recharge entry is hidden', async () => { +test('create tab wallet chip opens recharge on mobile web', async () => { const user = userEvent.setup(); mockNarrowMobileLayout(); @@ -4075,13 +4303,14 @@ test('create tab wallet chip opens reward code when recharge entry is hidden', a within(topbar as HTMLElement).getByRole('button', { name: /^70泥点$/u }), ); - expect(await screen.findByPlaceholderText('输入兑换码')).toBeTruthy(); - expect(mockGetRpgProfileRechargeCenter).not.toHaveBeenCalled(); + expect(await screen.findByText('账户充值')).toBeTruthy(); + expect(mockGetRpgProfileRechargeCenter).toHaveBeenCalledTimes(1); + expect(screen.queryByPlaceholderText('输入兑换码')).toBeNull(); }); test('create tab wallet chip opens recharge when recharge entry is enabled', async () => { const user = userEvent.setup(); - mockWechatDesktopLayout(); + mockDesktopLayout(); const { container } = render( node.closest('.platform-desktop-trending-item')) - .find((node): node is HTMLButtonElement => node instanceof HTMLButtonElement); + .find( + (node): node is HTMLButtonElement => node instanceof HTMLButtonElement, + ); if (!todayButton) { throw new Error('缺少桌面今日趋势行'); @@ -5823,7 +6058,9 @@ test('mobile home moves category shelf into game category channel', async () => name: /奇幻拼图,试玩/u, }); expect(categoryEntryButton).toBeTruthy(); - expect(categoryEntryButton.className).toContain('platform-navigable-list-item'); + expect(categoryEntryButton.className).toContain( + 'platform-navigable-list-item', + ); expect(container.querySelector('.platform-category-game-list')).toBeTruthy(); expect(container.querySelector('.platform-category-game-item')).toBeTruthy(); expect( @@ -5935,7 +6172,9 @@ test('desktop discover category shows loading state before category data is read throw new Error('缺少发现频道栏'); } - await user.click(within(channelBar as HTMLElement).getByRole('tab', { name: '分类' })); + await user.click( + within(channelBar as HTMLElement).getByRole('tab', { name: '分类' }), + ); expect(screen.getByText('正在读取作品分类...')).toBeTruthy(); expect(screen.queryByRole('button', { name: /筛选/u })).toBeNull(); diff --git a/src/components/rpg-entry/RpgEntryHomeView.tsx b/src/components/rpg-entry/RpgEntryHomeView.tsx index dce9c1f00..466f1a1cd 100644 --- a/src/components/rpg-entry/RpgEntryHomeView.tsx +++ b/src/components/rpg-entry/RpgEntryHomeView.tsx @@ -110,9 +110,7 @@ import { clampSquareImageCropRect, type SquareImageCropRect, } from '../common/squareImageCropModel'; -import { - useCopyFeedback, -} from '../common/useCopyFeedback'; +import { useCopyFeedback } from '../common/useCopyFeedback'; import { CustomWorldCoverArtwork } from '../CustomWorldCoverArtwork'; import { canExposePublicWork, @@ -2176,11 +2174,15 @@ function PlatformCategoryGameItem({ } trailing={ - {actionLabel} + + {actionLabel} + } >
- {displayName} + + {displayName} + 公开
@@ -2682,6 +2684,7 @@ export function RpgEntryHomeView({ buyRechargeProduct, claimTaskReward, claimingTaskId, + closeNativeWechatPayment, closeProfilePopupPanel, confirmNativeWechatPayment, copyInviteInfo, @@ -2892,9 +2895,12 @@ export function RpgEntryHomeView({ const activeCategoryFilterCount = activeCategoryEntries.length; const categoryFilterApplied = categoryKindFilter !== DEFAULT_PLATFORM_CATEGORY_KIND_FILTER; - const handleDiscoverChannelChange = useCallback((channel: DiscoverChannel) => { - setDiscoverChannel(channel); - }, []); + const handleDiscoverChannelChange = useCallback( + (channel: DiscoverChannel) => { + setDiscoverChannel(channel); + }, + [], + ); const handleCategoryGroupChange = useCallback((tag: string) => { hasManualCategoryTagSelectionRef.current = true; setSelectedCategoryTag(tag); @@ -2923,24 +2929,26 @@ export function RpgEntryHomeView({ () => buildProfileTaskCardSummary(taskCenter), [taskCenter], ); - const tabIcons: Record> = - isAuthenticated - ? { - home: Sparkles, - category: Compass, - create: Sparkles, - projects: FolderKanban, - saves: Pencil, - profile: UserRound, - } - : { - home: Gamepad2, - category: Compass, - create: Sparkles, - projects: FolderKanban, - saves: Pencil, - profile: UserRound, - }; + const tabIcons: Record< + PlatformNavTab, + ComponentType<{ className?: string }> + > = isAuthenticated + ? { + home: Sparkles, + category: Compass, + create: Sparkles, + projects: FolderKanban, + saves: Pencil, + profile: UserRound, + } + : { + home: Gamepad2, + category: Compass, + create: Sparkles, + projects: FolderKanban, + saves: Pencil, + profile: UserRound, + }; const tabLabels = { home: '推荐', category: '发现', @@ -3339,7 +3347,9 @@ export function RpgEntryHomeView({ 当前筛选下没有作品。} + emptyState={ + 当前筛选下没有作品。 + } >
{activeCategoryEntries.map((entry) => ( @@ -3358,7 +3368,9 @@ export function RpgEntryHomeView({ const desktopCategoryPanelContent = activeCategoryGroup ? ( <> 当前筛选下没有作品。} + emptyState={ + 当前筛选下没有作品。 + } >
{desktopCategoryGrid.map((entry) => ( @@ -3393,9 +3407,13 @@ export function RpgEntryHomeView({ 正在读取作品分类...} + loadingState={ + 正在读取作品分类... + } isEmpty={!activeCategoryGroup || activeCategoryRawCount === 0} - emptyState={暂时还没有可分类的作品。} + emptyState={ + 暂时还没有可分类的作品。 + } > {desktopCategoryPanelContent} @@ -3704,10 +3722,14 @@ export function RpgEntryHomeView({ 正在读取公开作品...} + loadingState={ + 正在读取公开作品... + } isEmpty={rankingEntries.length === 0} emptyState={ - {activeRankingConfig.emptyText} + + {activeRankingConfig.emptyText} + } >
@@ -3897,7 +3919,9 @@ export function RpgEntryHomeView({
正在读取公开作品...} + loadingState={ + 正在读取公开作品... + } isEmpty={!activeCategoryGroup || categoryGroups.length === 0} emptyState={ @@ -3912,14 +3936,18 @@ export function RpgEntryHomeView({
正在读取公开作品...} + loadingState={ + 正在读取公开作品... + } isEmpty={ edutainmentFeedEntries.length === 0 && !onOpenChildMotionDemo && !onOpenBabyLoveDrawing } emptyState={ - 暂时还没有可展示的作品。 + + 暂时还没有可展示的作品。 + } >
@@ -3984,7 +4012,9 @@ export function RpgEntryHomeView({ > 正在读取公开作品...} + loadingState={ + 正在读取公开作品... + } isEmpty={discoverFeedEntries.length === 0} emptyState={ @@ -4052,7 +4082,9 @@ export function RpgEntryHomeView({ 正在读取公开作品...} + loadingState={ + 正在读取公开作品... + } isEmpty={ edutainmentFeedEntries.length === 0 && !onOpenChildMotionDemo && @@ -4120,7 +4152,9 @@ export function RpgEntryHomeView({ /> 正在读取公开作品...} + loadingState={ + 正在读取公开作品... + } isEmpty={discoverFeedEntries.length === 0} emptyState={ @@ -4198,7 +4232,9 @@ export function RpgEntryHomeView({ ) : null} 正在读取你的作品...} + loadingState={ + 正在读取你的作品... + } isEmpty={myEntries.length === 0} emptyState={ @@ -4658,10 +4694,14 @@ export function RpgEntryHomeView({
正在读取今日游戏...} + loadingState={ + 正在读取今日游戏... + } isEmpty={desktopTodayEntries.length === 0} emptyState={ - 今天暂时还没有新游戏。 + + 今天暂时还没有新游戏。 + } >
@@ -4685,7 +4725,9 @@ export function RpgEntryHomeView({ 正在读取推荐作品...} + loadingState={ + 正在读取推荐作品... + } isEmpty={desktopFeaturedGrid.length === 0} emptyState={ 暂时还没有推荐作品。 @@ -4915,6 +4957,7 @@ export function RpgEntryHomeView({ onRetry={loadRechargeCenter} onBuy={buyRechargeProduct} onConfirmNativePayment={confirmNativeWechatPayment} + onCloseNativePayment={closeNativeWechatPayment} /> ) : null; const rechargePaymentResultModal: ReactNode = rechargePaymentResult ? ( @@ -4966,9 +5009,7 @@ export function RpgEntryHomeView({ /> ) : null; const apiKeysModal: ReactNode = isApiKeysModalOpen ? ( - setIsApiKeysModalOpen(false)} - /> + setIsApiKeysModalOpen(false)} /> ) : null; const desktopBrandLockup: ReactNode = ( @@ -5006,7 +5047,11 @@ export function RpgEntryHomeView({ }} > {avatarUrl ? ( - + ) : ( avatarLabel )} diff --git a/src/components/rpg-entry/useRpgEntryBootstrap.test.tsx b/src/components/rpg-entry/useRpgEntryBootstrap.test.tsx new file mode 100644 index 000000000..3d3a5525f --- /dev/null +++ b/src/components/rpg-entry/useRpgEntryBootstrap.test.tsx @@ -0,0 +1,93 @@ +/* @vitest-environment jsdom */ + +import { renderHook, waitFor } from '@testing-library/react'; +import { beforeEach, expect, test, vi } from 'vitest'; + +import type { AuthUser } from '../../services/authService'; +import { + listRpgEntryWorldGallery, + listRpgEntryWorldLibrary, + listRpgProfileBrowseHistory, + listRpgProfileSaveArchives, +} from '../../services/rpg-entry'; +import { listRpgCreationWorks } from '../../services/rpg-creation/index'; +import { useRpgEntryBootstrap } from './useRpgEntryBootstrap'; + +vi.mock('../../services/rpg-entry', () => ({ + listRpgEntryWorldGallery: vi.fn(), + listRpgEntryWorldLibrary: vi.fn(), + listRpgProfileBrowseHistory: vi.fn(), + listRpgProfileSaveArchives: vi.fn(), + resumeRpgProfileSaveArchive: vi.fn(), + upsertRpgProfileBrowseHistory: vi.fn(), +})); + +vi.mock('../../services/rpg-creation/index', () => ({ + listRpgCreationWorks: vi.fn(), +})); + +const mockListRpgEntryWorldGallery = vi.mocked(listRpgEntryWorldGallery); +const mockListRpgEntryWorldLibrary = vi.mocked(listRpgEntryWorldLibrary); +const mockListRpgCreationWorks = vi.mocked(listRpgCreationWorks); +const mockListRpgProfileBrowseHistory = vi.mocked(listRpgProfileBrowseHistory); +const mockListRpgProfileSaveArchives = vi.mocked(listRpgProfileSaveArchives); + +const testUser: AuthUser = { + id: 'user-1', + publicUserCode: '100001', + displayName: 'Test User', + avatarUrl: null, + phoneNumberMasked: null, + loginMethod: 'password', + bindingStatus: 'active', + wechatBound: false, +}; + +beforeEach(() => { + vi.clearAllMocks(); + mockListRpgEntryWorldGallery.mockResolvedValue([]); + mockListRpgEntryWorldLibrary.mockResolvedValue([]); + mockListRpgCreationWorks.mockResolvedValue([]); + mockListRpgProfileBrowseHistory.mockResolvedValue([]); + mockListRpgProfileSaveArchives.mockResolvedValue([]); +}); + +test('login refreshes platform data without showing page loading again', async () => { + const getProfileDashboard = vi.fn(async () => null); + let resolveInitialGallery: (value: []) => void = () => undefined; + mockListRpgEntryWorldGallery.mockReturnValueOnce( + new Promise<[]>((resolve) => { + resolveInitialGallery = resolve; + }), + ); + + const { result, rerender } = renderHook( + ({ user }: { user: AuthUser | null }) => + useRpgEntryBootstrap({ + user, + canAccessProtectedData: Boolean(user), + getProfileDashboard, + handleContinueGame: vi.fn(), + hasInitialAgentSession: false, + }), + { initialProps: { user: null as AuthUser | null } }, + ); + + await waitFor(() => { + expect(result.current.isLoadingPlatform).toBe(true); + }); + + resolveInitialGallery([]); + + await waitFor(() => { + expect(result.current.isLoadingPlatform).toBe(false); + }); + + rerender({ user: testUser }); + + await waitFor(() => { + expect(mockListRpgEntryWorldLibrary).toHaveBeenCalledTimes(1); + }); + expect(result.current.isLoadingPlatform).toBe(false); + expect(result.current.isLoadingDashboard).toBe(false); +}); diff --git a/src/components/rpg-entry/useRpgEntryBootstrap.ts b/src/components/rpg-entry/useRpgEntryBootstrap.ts index 2e149512f..dcc0dc8aa 100644 --- a/src/components/rpg-entry/useRpgEntryBootstrap.ts +++ b/src/components/rpg-entry/useRpgEntryBootstrap.ts @@ -59,6 +59,7 @@ export function useRpgEntryBootstrap( const platformTabBootstrapUserIdRef = useRef( undefined, ); + const hasCompletedPlatformBootstrapRef = useRef(false); const hasExplicitPlatformTabSelectionRef = useRef(false); const [savedCustomWorldEntries, setSavedCustomWorldEntries] = useState< @@ -231,12 +232,16 @@ export function useRpgEntryBootstrap( } void (async () => { + const shouldShowBlockingLoading = + !hasCompletedPlatformBootstrapRef.current; setHistoryEntries([]); setHistoryError(null); setSaveError(null); - setIsLoadingPlatform(true); + setIsLoadingPlatform(shouldShowBlockingLoading); setPlatformError(null); - setIsLoadingDashboard(canReadProtectedData); + setIsLoadingDashboard( + canReadProtectedData && shouldShowBlockingLoading, + ); setDashboardError(null); if (!canReadProtectedData) { setSavedCustomWorldEntries([]); @@ -355,6 +360,7 @@ export function useRpgEntryBootstrap( } } finally { if (isActive) { + hasCompletedPlatformBootstrapRef.current = true; setIsLoadingPlatform(false); setIsLoadingDashboard(false); } diff --git a/src/routing/RouteImageReadyGate.test.ts b/src/routing/RouteImageReadyGate.test.ts index f6a4f3da2..282d12041 100644 --- a/src/routing/RouteImageReadyGate.test.ts +++ b/src/routing/RouteImageReadyGate.test.ts @@ -15,6 +15,7 @@ import { RouteLoadingScreen } from './RouteLoadingScreen'; afterEach(() => { vi.useRealTimers(); window.localStorage.clear(); + window.sessionStorage.clear(); }); describe('RouteImageReadyGate image url helpers', () => { @@ -87,6 +88,56 @@ describe('RouteImageReadyGate image url helpers', () => { expect(visibilityGate?.style.visibility).toBe('visible'); }); + it('does not show the full screen route loader again after the same route was revealed', () => { + vi.useFakeTimers(); + + const firstRender = render( + createElement( + RouteImageReadyGate, + { + eyebrow: 'Loading', + text: 'Please wait', + }, + createElement( + 'section', + { + 'data-testid': 'route-content', + }, + createElement('img', { + src: '/generated-characters/slow-cover.png', + alt: 'slow cover', + }), + ), + ), + ); + + expect(screen.getByText('Please wait')).toBeTruthy(); + + act(() => { + vi.advanceTimersByTime(1600); + }); + + expect(screen.queryByText('Please wait')).toBeNull(); + firstRender.unmount(); + + render( + createElement( + RouteImageReadyGate, + { + eyebrow: 'Loading', + text: 'Please wait', + }, + createElement('section', { 'data-testid': 'route-content' }, 'Ready'), + ), + ); + + const content = screen.getByTestId('route-content'); + const visibilityGate = content.parentElement; + expect(visibilityGate?.getAttribute('aria-hidden')).toBe('false'); + expect(visibilityGate?.style.visibility).toBe('visible'); + expect(screen.queryByText('Please wait')).toBeNull(); + }); + it('uses the saved platform theme tokens for the route loading screen', () => { window.localStorage.setItem( 'tavernrealms.settings.v1', diff --git a/src/routing/RouteImageReadyGate.tsx b/src/routing/RouteImageReadyGate.tsx index 296348712..cb6ef3c0c 100644 --- a/src/routing/RouteImageReadyGate.tsx +++ b/src/routing/RouteImageReadyGate.tsx @@ -17,10 +17,40 @@ const IMAGE_GATE_QUIET_MS = 140; const IMAGE_GATE_MIN_VISIBLE_WAIT_MS = 260; const IMAGE_GATE_MAX_BLOCK_MS = 1400; const IMAGE_PRELOAD_TIMEOUT_MS = 12000; +const ROUTE_IMAGE_READY_SESSION_PREFIX = 'genarrative:route-image-ready:'; const settledImageUrls = new Set(); const imagePreloadTasks = new Map>(); +function getRouteImageReadySessionKey() { + if (typeof window === 'undefined') { + return ROUTE_IMAGE_READY_SESSION_PREFIX; + } + return `${ROUTE_IMAGE_READY_SESSION_PREFIX}${window.location.pathname}`; +} + +function hasSeenRouteImageReady() { + if (typeof window === 'undefined') { + return false; + } + try { + return window.sessionStorage.getItem(getRouteImageReadySessionKey()) === '1'; + } catch { + return false; + } +} + +function markRouteImageReadySeen() { + if (typeof window === 'undefined') { + return; + } + try { + window.sessionStorage.setItem(getRouteImageReadySessionKey(), '1'); + } catch { + // sessionStorage may be blocked in embedded browsers; the visual gate still works without it. + } +} + function preloadImageUrl(url: string) { const existingTask = imagePreloadTasks.get(url); if (existingTask) { @@ -80,13 +110,18 @@ export function RouteImageReadyGate({ const revealTimerRef = useRef(null); const scanVersionRef = useRef(0); const revealedRef = useRef(false); - const [ready, setReady] = useState(false); + const [ready, setReady] = useState(() => hasSeenRouteImageReady()); useEffect(() => { const root = rootRef.current; if (!root) { return; } + if (hasSeenRouteImageReady()) { + revealedRef.current = true; + setReady(true); + return; + } let disposed = false; startTimeRef.current = window.performance.now(); @@ -133,6 +168,7 @@ export function RouteImageReadyGate({ } revealedRef.current = true; + markRouteImageReadySeen(); setReady(true); }, delay); }; diff --git a/src/services/authService.test.ts b/src/services/authService.test.ts index 29f18c4b2..f37075577 100644 --- a/src/services/authService.test.ts +++ b/src/services/authService.test.ts @@ -54,6 +54,7 @@ import { revokeAuthSession, revokeAuthSessions, sendPhoneLoginCode, + startWechatBind, startWechatLogin, updateAuthProfile, } from './authService'; @@ -444,6 +445,64 @@ describe('authService', () => { expect(assignMock).not.toHaveBeenCalled(); }); + it('keeps current query when starting wechat login', async () => { + vi.stubGlobal( + 'window', + createWindowMock({ + location: { + pathname: '/play', + hash: '', + search: '?clientRuntime=wechat_h5&from=recharge', + assign: vi.fn(), + }, + }), + ); + apiClientMocks.requestJson.mockResolvedValue({ + authorizationUrl: 'https://open.weixin.qq.com/connect/oauth2/authorize', + }); + + await startWechatLogin(); + + expect(apiClientMocks.requestJson).toHaveBeenCalledWith( + '/api/auth/wechat/start?redirectPath=%2Fplay%3FclientRuntime%3Dwechat_h5%26from%3Drecharge', + expect.objectContaining({ + method: 'GET', + }), + '微信登录暂不可用', + { + skipAuth: true, + skipRefresh: true, + }, + ); + }); + + it('keeps current query and auth when starting wechat bind', async () => { + vi.stubGlobal( + 'window', + createWindowMock({ + location: { + pathname: '/play', + hash: '', + search: '?clientRuntime=wechat_h5&from=recharge', + assign: vi.fn(), + }, + }), + ); + apiClientMocks.requestJson.mockResolvedValue({ + authorizationUrl: 'https://open.weixin.qq.com/connect/oauth2/authorize', + }); + + await startWechatBind(); + + expect(apiClientMocks.requestJson).toHaveBeenCalledWith( + '/api/auth/wechat/bind-start?redirectPath=%2Fplay%3FclientRuntime%3Dwechat_h5%26from%3Drecharge', + expect.objectContaining({ + method: 'GET', + }), + '微信授权暂不可用', + ); + }); + it('requests mini program phone login by opening the native auth page', async () => { const navigateTo = vi.fn((options: { url: string; success?: () => void }) => { options.success?.(); diff --git a/src/services/authService.ts b/src/services/authService.ts index a2353b602..a1dd702c0 100644 --- a/src/services/authService.ts +++ b/src/services/authService.ts @@ -272,8 +272,9 @@ export async function changePhoneNumber(phone: string, code: string) { } export async function startWechatLogin() { + const redirectPath = `${window.location.pathname}${window.location.search}`; const response = await requestJson( - `/api/auth/wechat/start?redirectPath=${encodeURIComponent(window.location.pathname)}`, + `/api/auth/wechat/start?redirectPath=${encodeURIComponent(redirectPath)}`, { method: 'GET', }, @@ -289,6 +290,24 @@ export async function startWechatLogin() { } } +export async function startWechatBind() { + const redirectPath = `${window.location.pathname}${window.location.search}`; + const response = await requestJson( + `/api/auth/wechat/bind-start?redirectPath=${encodeURIComponent(redirectPath)}`, + { + method: 'GET', + }, + '微信授权暂不可用', + ); + + const openedByHost = await openHostExternalUrl({ + url: response.authorizationUrl, + }); + if (!openedByHost) { + window.location.assign(response.authorizationUrl); + } +} + export async function getAuthLoginOptions() { return requestJson( '/api/auth/login-options', diff --git a/src/services/payment/paymentPlatform.test.ts b/src/services/payment/paymentPlatform.test.ts index 6326218aa..a2c963b16 100644 --- a/src/services/payment/paymentPlatform.test.ts +++ b/src/services/payment/paymentPlatform.test.ts @@ -4,7 +4,6 @@ import { resolveProfileRechargePaymentChannel, resolveProfileRechargeProductPaymentChannel, shouldShowRechargeEntry, - WECHAT_H5_PAYMENT_CHANNEL, WECHAT_MINI_PROGRAM_VIRTUAL_PAYMENT_CHANNEL, WECHAT_NATIVE_PAYMENT_CHANNEL, } from './paymentPlatform'; @@ -48,14 +47,13 @@ describe('resolveProfileRechargePaymentChannel', () => { resolveProfileRechargePaymentChannel({ location: { search: '' }, navigator: { - userAgent: - 'Mozilla/5.0 iPhone MicroMessenger/8.0.49 miniProgram', + userAgent: 'Mozilla/5.0 iPhone MicroMessenger/8.0.49 miniProgram', }, }), ).toBe(WECHAT_MINI_PROGRAM_VIRTUAL_PAYMENT_CHANNEL); }); - test('移动网页选择 wechat_h5', () => { + test('移动网页也选择 wechat_native', () => { expect( resolveProfileRechargePaymentChannel({ location: { search: '' }, @@ -64,10 +62,10 @@ describe('resolveProfileRechargePaymentChannel', () => { 'Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X) Mobile', }, }), - ).toBe(WECHAT_H5_PAYMENT_CHANNEL); + ).toBe(WECHAT_NATIVE_PAYMENT_CHANNEL); }); - test('微信内 H5 首版仍选择 wechat_h5', () => { + test('微信内 H5 在开放平台未接入前选择 wechat_native', () => { expect( resolveProfileRechargePaymentChannel({ location: { search: '' }, @@ -76,7 +74,7 @@ describe('resolveProfileRechargePaymentChannel', () => { 'Mozilla/5.0 (Linux; Android 14) AppleWebKit MicroMessenger/8.0 Mobile', }, }), - ).toBe(WECHAT_H5_PAYMENT_CHANNEL); + ).toBe(WECHAT_NATIVE_PAYMENT_CHANNEL); }); test('桌面网页选择 wechat_native', () => { @@ -89,7 +87,7 @@ describe('resolveProfileRechargePaymentChannel', () => { ).toBe(WECHAT_NATIVE_PAYMENT_CHANNEL); }); - test('桌面微信内网页选择 wechat_native', () => { + test('桌面微信内网页也选择 wechat_native', () => { expect( resolveProfileRechargePaymentChannel({ location: { search: '' }, @@ -135,7 +133,7 @@ describe('shouldShowRechargeEntry', () => { ).toBe(true); }); - test('普通浏览器不显示充值入口', () => { + test('普通移动浏览器也显示充值入口', () => { expect( shouldShowRechargeEntry({ location: { search: '' }, @@ -144,12 +142,15 @@ describe('shouldShowRechargeEntry', () => { 'Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X) Mobile', }, }), - ).toBe(false); + ).toBe(true); + }); + + test('普通桌面浏览器也显示充值入口', () => { expect( shouldShowRechargeEntry({ location: { search: '' }, navigator: { userAgent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)' }, }), - ).toBe(false); + ).toBe(true); }); }); diff --git a/src/services/payment/paymentPlatform.ts b/src/services/payment/paymentPlatform.ts index 432199e8c..47e925003 100644 --- a/src/services/payment/paymentPlatform.ts +++ b/src/services/payment/paymentPlatform.ts @@ -2,6 +2,7 @@ import { getHostRuntime } from '../host-bridge/hostBridge'; export const WECHAT_MINI_PROGRAM_PAYMENT_CHANNEL = 'wechat_mp'; export const WECHAT_MINI_PROGRAM_VIRTUAL_PAYMENT_CHANNEL = 'wechat_mp_virtual'; +export const WECHAT_JSAPI_PAYMENT_CHANNEL = 'wechat_jsapi'; export const WECHAT_H5_PAYMENT_CHANNEL = 'wechat_h5'; export const WECHAT_NATIVE_PAYMENT_CHANNEL = 'wechat_native'; export const MOCK_PAYMENT_CHANNEL = 'mock'; @@ -9,6 +10,7 @@ export const MOCK_PAYMENT_CHANNEL = 'mock'; export type ProfileRechargeWechatPaymentChannel = | typeof WECHAT_MINI_PROGRAM_PAYMENT_CHANNEL | typeof WECHAT_MINI_PROGRAM_VIRTUAL_PAYMENT_CHANNEL + | typeof WECHAT_JSAPI_PAYMENT_CHANNEL | typeof WECHAT_H5_PAYMENT_CHANNEL | typeof WECHAT_NATIVE_PAYMENT_CHANNEL; @@ -24,18 +26,8 @@ export type PaymentPlatformContext = { matchMedia?: Window['matchMedia'] | null; }; -export function shouldShowRechargeEntry( - context: PaymentPlatformContext = {}, -) { - const location = - context.location ?? (typeof window !== 'undefined' ? window.location : null); - const navigatorLike = - context.navigator ?? (typeof navigator !== 'undefined' ? navigator : null); - - return ( - isWechatMiniProgramRuntime(location, navigatorLike) || - isWechatBrowserRuntime(navigatorLike) - ); +export function shouldShowRechargeEntry(_context: PaymentPlatformContext = {}) { + return true; } export function resolveProfileRechargePaymentChannel( @@ -46,20 +38,11 @@ export function resolveProfileRechargePaymentChannel( (typeof window !== 'undefined' ? window.location : null); const navigatorLike = context.navigator ?? (typeof navigator !== 'undefined' ? navigator : null); - const matchMedia = - context.matchMedia ?? - (typeof window !== 'undefined' && typeof window.matchMedia === 'function' - ? window.matchMedia.bind(window) - : null); if (isWechatMiniProgramRuntime(location, navigatorLike)) { return WECHAT_MINI_PROGRAM_VIRTUAL_PAYMENT_CHANNEL; } - if (isMobileWebRuntime(navigatorLike, matchMedia)) { - return WECHAT_H5_PAYMENT_CHANNEL; - } - return WECHAT_NATIVE_PAYMENT_CHANNEL; } @@ -75,38 +58,19 @@ export function isManualMockPaymentChannel(paymentChannel: string) { } export function isWechatMiniProgramRuntime( - location: Pick | null | undefined = - typeof window !== 'undefined' ? window.location : null, - navigatorLike: Partial | null | undefined = - typeof navigator !== 'undefined' ? navigator : null, -) { - return getHostRuntime({ - location, - navigator: navigatorLike, - }).kind === 'wechat_mini_program'; -} - -function isWechatBrowserRuntime( - navigatorLike: Partial | null | undefined, + location: Pick | null | undefined = typeof window !== + 'undefined' + ? window.location + : null, + navigatorLike: + | Partial + | null + | undefined = typeof navigator !== 'undefined' ? navigator : null, ) { return ( - navigatorLike?.userAgent?.toLowerCase().includes('micromessenger') ?? - false + getHostRuntime({ + location, + navigator: navigatorLike, + }).kind === 'wechat_mini_program' ); } - -function isMobileWebRuntime( - navigatorLike: Partial | null | undefined, - matchMedia: Window['matchMedia'] | null | undefined, -) { - const userAgent = navigatorLike?.userAgent?.toLowerCase() ?? ''; - if (/android|iphone|ipad|ipod|mobile|windows phone/u.test(userAgent)) { - return true; - } - - if ((navigatorLike?.maxTouchPoints ?? 0) > 1) { - return true; - } - - return Boolean(matchMedia?.('(max-width: 767px)').matches); -} diff --git a/src/services/payment/wechatJsapiPayment.test.ts b/src/services/payment/wechatJsapiPayment.test.ts new file mode 100644 index 000000000..df2a18799 --- /dev/null +++ b/src/services/payment/wechatJsapiPayment.test.ts @@ -0,0 +1,85 @@ +/* @vitest-environment jsdom */ + +import { afterEach, describe, expect, test, vi } from 'vitest'; + +import { requestWechatJsapiPayment } from './wechatJsapiPayment'; + +afterEach(() => { + vi.unstubAllGlobals(); +}); + +describe('requestWechatJsapiPayment', () => { + test('resolves when WeixinJSBridge reports payment success', async () => { + const invoke = vi.fn( + ( + _method: string, + _params: Record, + callback: (result: { err_msg: string }) => void, + ) => { + callback({ err_msg: 'get_brand_wcpay_request:ok' }); + }, + ); + vi.stubGlobal('WeixinJSBridge', { invoke }); + + await expect( + requestWechatJsapiPayment({ + appId: 'wx-app', + timeStamp: '1770000000', + nonceStr: 'nonce', + package: 'prepay_id=wx', + signType: 'RSA', + paySign: 'pay-sign', + }), + ).resolves.toBeUndefined(); + + expect(invoke).toHaveBeenCalledWith( + 'getBrandWCPayRequest', + { + appId: 'wx-app', + timeStamp: '1770000000', + nonceStr: 'nonce', + package: 'prepay_id=wx', + signType: 'RSA', + paySign: 'pay-sign', + }, + expect.any(Function), + ); + }); + + test('rejects when user cancels the WeChat payment sheet', async () => { + vi.stubGlobal('WeixinJSBridge', { + invoke: vi.fn( + ( + _method: string, + _params: Record, + callback: (result: { err_msg: string }) => void, + ) => { + callback({ err_msg: 'get_brand_wcpay_request:cancel' }); + }, + ), + }); + + await expect( + requestWechatJsapiPayment({ + appId: 'wx-app', + timeStamp: '1770000000', + nonceStr: 'nonce', + package: 'prepay_id=wx', + signType: 'RSA', + paySign: 'pay-sign', + }), + ).rejects.toThrow('微信支付已取消'); + }); + + test('rejects when appId is missing', async () => { + await expect( + requestWechatJsapiPayment({ + timeStamp: '1770000000', + nonceStr: 'nonce', + package: 'prepay_id=wx', + signType: 'RSA', + paySign: 'pay-sign', + }), + ).rejects.toThrow('微信 JSAPI 支付参数缺少 appId'); + }); +}); diff --git a/src/services/payment/wechatJsapiPayment.ts b/src/services/payment/wechatJsapiPayment.ts new file mode 100644 index 000000000..888ae0498 --- /dev/null +++ b/src/services/payment/wechatJsapiPayment.ts @@ -0,0 +1,107 @@ +import type { + WechatMiniProgramPayParams, + WechatMiniProgramVirtualPayParams, +} from '../../../packages/shared/src/contracts/runtime'; + +type WeixinJsBridgePaymentResult = { + err_msg?: string; + errMsg?: string; +}; + +type WeixinJsBridge = { + invoke: ( + method: 'getBrandWCPayRequest', + params: Record, + callback: (result: WeixinJsBridgePaymentResult) => void, + ) => void; +}; + +function getWeixinJsBridge() { + const bridge = window.WeixinJSBridge; + if ( + bridge && + typeof bridge === 'object' && + 'invoke' in bridge && + typeof bridge.invoke === 'function' + ) { + return bridge as WeixinJsBridge; + } + + return null; +} + +function waitForWeixinJsBridge() { + const readyBridge = getWeixinJsBridge(); + if (readyBridge) { + return Promise.resolve(readyBridge); + } + + return new Promise((resolve, reject) => { + const timeout = window.setTimeout(() => { + document.removeEventListener('WeixinJSBridgeReady', handleReady); + reject(new Error('微信 JSAPI 支付环境未就绪')); + }, 8000); + + function handleReady() { + const bridge = getWeixinJsBridge(); + if (!bridge) { + return; + } + + window.clearTimeout(timeout); + document.removeEventListener('WeixinJSBridgeReady', handleReady); + resolve(bridge); + } + + document.addEventListener('WeixinJSBridgeReady', handleReady, { + once: true, + }); + }); +} + +export async function requestWechatJsapiPayment( + payload: + | WechatMiniProgramPayParams + | WechatMiniProgramVirtualPayParams + | null + | undefined, +) { + if (!payload) { + throw new Error('微信 JSAPI 支付参数缺失'); + } + + if (!('timeStamp' in payload)) { + throw new Error('微信 JSAPI 支付参数格式无效'); + } + + const appId = payload.appId?.trim(); + if (!appId) { + throw new Error('微信 JSAPI 支付参数缺少 appId'); + } + + const bridge = await waitForWeixinJsBridge(); + const result = await new Promise((resolve) => { + bridge.invoke( + 'getBrandWCPayRequest', + { + appId, + timeStamp: payload.timeStamp, + nonceStr: payload.nonceStr, + package: payload.package, + signType: payload.signType, + paySign: payload.paySign, + }, + resolve, + ); + }); + const message = result.err_msg ?? result.errMsg ?? ''; + const normalizedMessage = message.toLowerCase(); + if (normalizedMessage.includes(':ok')) { + return; + } + if (normalizedMessage.includes(':cancel')) { + throw new Error('微信支付已取消'); + } + + throw new Error(message || '微信 JSAPI 支付调起失败'); +}
setDetailRow(row)} > {visibleColumns.map((column) => { - const cellValue = formatCellValue(row.cells[column]); + const cellValue = formatCellValue( + row.cells[column], + column, + ); return ( - 暂无数据 + 暂无数据 +