From e4d13f5a6420e03ec1e9703c84b8f3bbba6c9192 Mon Sep 17 00:00:00 2001 From: rupansh Date: Thu, 14 Mar 2024 12:06:56 +0530 Subject: [PATCH] chore+fix: update dids --- did/individual_user_template.did | 45 +++++++++++++++++++++++++------- did/platform_orchestrator.did | 28 ++++++++++++++++---- did/post_cache.did | 35 +++++++++++++------------ did/user_index.did | 22 ++++++++++++++-- src/page/post_view/video_iter.rs | 14 +++++++--- src/page/refer_earn/history.rs | 6 ++--- src/page/root.rs | 8 +++++- src/page/wallet/txn.rs | 7 +++-- src/utils/profile.rs | 6 ++--- 9 files changed, 123 insertions(+), 48 deletions(-) diff --git a/did/individual_user_template.did b/did/individual_user_template.did index 4a6d7a3a..515c52cf 100644 --- a/did/individual_user_template.did +++ b/did/individual_user_template.did @@ -87,6 +87,17 @@ type HotOrNotOutcomePayoutEvent = variant { post_canister_id : principal; }; }; +type HttpRequest = record { + url : text; + method : text; + body : vec nat8; + headers : vec record { text; text }; +}; +type HttpResponse = record { + body : vec nat8; + headers : vec record { text; text }; + status_code : nat16; +}; type IndividualUserTemplateInitArgs = record { known_principal_ids : opt vec record { KnownPrincipalType; principal }; version : text; @@ -197,22 +208,25 @@ type Result_1 = variant { Ok : BettingStatus; Err : BetOnCurrentlyViewingPostError; }; +type Result_10 = variant { Ok; Err : text }; +type Result_11 = variant { Ok; Err : UpdateProfileSetUniqueUsernameError }; type Result_2 = variant { Ok : bool; Err : FollowAnotherUserProfileError }; type Result_3 = variant { Ok : Post; Err }; -type Result_4 = variant { +type Result_4 = variant { Ok : SystemTime; Err : text }; +type Result_5 = variant { Ok : vec PostDetailsForFrontend; Err : GetPostsOfUserProfileError; }; -type Result_5 = variant { +type Result_6 = variant { Ok : SessionType; Err : text }; +type Result_7 = variant { Ok : vec record { nat64; TokenEvent }; Err : GetPostsOfUserProfileError; }; -type Result_6 = variant { +type Result_8 = variant { Ok : text; Err : text }; +type Result_9 = variant { Ok : UserProfileDetailsForFrontend; Err : UpdateProfileDetailsError; }; -type Result_7 = variant { Ok; Err : text }; -type Result_8 = variant { Ok; Err : UpdateProfileSetUniqueUsernameError }; type RoomBetPossibleOutcomes = variant { HotWon; BetOngoing; Draw; NotWon }; type RoomDetails = record { total_hot_bets : nat64; @@ -221,6 +235,7 @@ type RoomDetails = record { room_bets_total_pot : nat64; bet_outcome : RoomBetPossibleOutcomes; }; +type SessionType = variant { AnonymousSession; RegisteredSession }; type SlotDetails = record { room_details : vec record { nat64; RoomDetails } }; type StakeEvent = variant { BetOnHotOrNotPost : PlaceBetArg }; type SystemTime = record { @@ -282,7 +297,9 @@ service : (IndividualUserTemplateInitArgs) -> { check_and_update_scores_and_share_with_post_cache_if_difference_beyond_threshold : ( vec nat64, ) -> (); + clear_snapshot : () -> (); do_i_follow_this_user : (FolloweeArg) -> (Result_2) query; + download_snapshot : (nat64, nat64) -> (vec nat8) query; get_entire_individual_post_detail_by_id : (nat64) -> (Result_3) query; get_hot_or_not_bet_details_for_this_post : (nat64) -> (BettingStatus) query; get_hot_or_not_bets_placed_by_this_profile_with_pagination : (nat64) -> ( @@ -292,8 +309,9 @@ service : (IndividualUserTemplateInitArgs) -> { opt PlacedBetDetail, ) query; get_individual_post_details_by_id : (nat64) -> (PostDetailsForFrontend) query; + get_last_access_time : () -> (Result_4) query; get_posts_of_this_user_profile_with_pagination : (nat64, nat64) -> ( - Result_4, + Result_5, ) query; get_principals_that_follow_this_profile_paginated : (opt nat64) -> ( vec record { nat64; FollowEntryDetail }, @@ -304,18 +322,22 @@ service : (IndividualUserTemplateInitArgs) -> { get_profile_details : () -> (UserProfileDetailsForFrontend) query; get_rewarded_for_referral : (principal, principal) -> (); get_rewarded_for_signing_up : () -> (); + get_session_type : () -> (Result_6) query; get_stable_memory_size : () -> (nat32) query; get_user_caniser_cycle_balance : () -> (nat) query; get_user_utility_token_transaction_history_with_pagination : ( nat64, nat64, - ) -> (Result_5) query; + ) -> (Result_7) query; get_utility_token_balance : () -> (nat64) query; get_version : () -> (text) query; get_version_number : () -> (nat64) query; get_well_known_principal_value : (KnownPrincipalType) -> ( opt principal, ) query; + http_request : (HttpRequest) -> (HttpResponse) query; + load_snapshot : (nat64) -> (); + receive_and_save_snaphot : (nat64, vec nat8) -> (); receive_bet_from_bet_makers_canister : (PlaceBetArg, principal) -> (Result_1); receive_bet_winnings_when_distributed : (nat64, BetOutcomeForBetMaker) -> (); receive_my_created_posts_from_data_backup_canister : (vec Post) -> (); @@ -329,19 +351,22 @@ service : (IndividualUserTemplateInitArgs) -> { vec principal, ) -> (); return_cycles_to_user_index_canister : (opt nat) -> (); + save_snapshot_json : () -> (nat32); + update_last_access_time : () -> (Result_8); update_post_add_view_details : (nat64, PostViewDetailsFromFrontend) -> (); update_post_as_ready_to_view : (nat64) -> (); update_post_increment_share_count : (nat64) -> (nat64); update_post_toggle_like_status_by_caller : (nat64) -> (bool); update_profile_display_details : (UserProfileUpdateDetailsFromFrontend) -> ( - Result_6, + Result_9, ); - update_profile_owner : (opt principal) -> (Result_7); - update_profile_set_unique_username_once : (text) -> (Result_8); + update_profile_owner : (opt principal) -> (Result_10); + update_profile_set_unique_username_once : (text) -> (Result_11); update_profiles_i_follow_toggle_list_with_specified_profile : ( FolloweeArg, ) -> (Result_2); update_profiles_that_follow_me_toggle_list_with_specified_profile : ( FollowerArg, ) -> (Result_2); + update_session_type : (opt SessionType) -> (text); } diff --git a/did/platform_orchestrator.did b/did/platform_orchestrator.did index 94f1f307..47dc9858 100644 --- a/did/platform_orchestrator.did +++ b/did/platform_orchestrator.did @@ -3,9 +3,20 @@ type CanisterUpgradeStatus = record { count : nat64; upgrade_arg : UpgradeCanisterArg; }; +type HttpRequest = record { + url : text; + method : text; + body : vec nat8; + headers : vec record { text; text }; +}; +type HttpResponse = record { + body : vec nat8; + headers : vec record { text; text }; + status_code : nat16; +}; type PlatformOrchestratorInitArgs = record { version : text }; -type Result = variant { Ok : principal; Err : text }; -type Result_1 = variant { Ok : text; Err : text }; +type Result = variant { Ok : text; Err : text }; +type Result_1 = variant { Ok : principal; Err : text }; type UpgradeCanisterArg = record { version : text; canister : WasmType; @@ -17,12 +28,19 @@ type WasmType = variant { SubnetOrchestratorWasm; }; service : (PlatformOrchestratorInitArgs) -> { + deposit_cycles_to_canister : (principal, nat) -> (Result); get_all_available_subnet_orchestrators : () -> (vec principal) query; get_all_subnet_orchestrators : () -> (vec principal) query; get_subnet_last_upgrade_status : () -> (CanisterUpgradeStatus) query; get_version : () -> (text) query; - provision_subnet_orchestrator_canister : (principal) -> (Result); + http_request : (HttpRequest) -> (HttpResponse) query; + provision_subnet_orchestrator_canister : (principal) -> (Result_1); + start_reclaiming_cycles_from_individual_canisters : () -> (Result); + start_reclaiming_cycles_from_subnet_orchestrator_canister : () -> (text); + stop_upgrades_for_individual_user_canisters : () -> (Result); subnet_orchestrator_maxed_out : () -> (); - upgrade_canister : (UpgradeCanisterArg) -> (Result_1); - upload_wasms : (WasmType, vec nat8) -> (Result_1); + update_profile_owner_for_individual_canisters : () -> (); + upgrade_canister : (UpgradeCanisterArg) -> (Result); + upgrade_specific_individual_canister : (principal) -> (); + upload_wasms : (WasmType, vec nat8) -> (Result); } diff --git a/did/post_cache.did b/did/post_cache.did index a5b093e6..f6958e63 100644 --- a/did/post_cache.did +++ b/did/post_cache.did @@ -1,3 +1,14 @@ +type HttpRequest = record { + url : text; + method : text; + body : vec nat8; + headers : vec record { text; text }; +}; +type HttpResponse = record { + body : vec nat8; + headers : vec record { text; text }; + status_code : nat16; +}; type KnownPrincipalType = variant { CanisterIdUserIndex; CanisterIdPlatformOrchestrator; @@ -11,16 +22,12 @@ type KnownPrincipalType = variant { CanisterIdSnsGovernance; UserIdGlobalSuperAdmin; }; +type NsfwFilter = variant { IncludeNsfw; OnlyNsfw; ExcludeNsfw }; type PostCacheInitArgs = record { known_principal_ids : opt vec record { KnownPrincipalType; principal }; version : text; upgrade_version_number : opt nat64; }; -type PostScoreIndexItem = record { - post_id : nat64; - score : nat64; - publisher_canister_id : principal; -}; type PostScoreIndexItemV1 = record { is_nsfw : bool; status : PostStatus; @@ -38,8 +45,7 @@ type PostStatus = variant { Transcoding; Deleted; }; -type Result = variant { Ok : vec PostScoreIndexItem; Err : TopPostsFetchError }; -type Result_1 = variant { +type Result = variant { Ok : vec PostScoreIndexItemV1; Err : TopPostsFetchError; }; @@ -54,29 +60,24 @@ type TopPostsFetchError = variant { }; service : (PostCacheInitArgs) -> { get_cycle_balance : () -> (nat) query; - get_top_posts_aggregated_from_canisters_on_this_network_for_home_feed : ( - nat64, - nat64, - ) -> (Result) query; get_top_posts_aggregated_from_canisters_on_this_network_for_home_feed_cursor : ( nat64, nat64, opt bool, opt PostStatus, - ) -> (Result_1) query; - get_top_posts_aggregated_from_canisters_on_this_network_for_hot_or_not_feed : ( - nat64, - nat64, + opt NsfwFilter, ) -> (Result) query; get_top_posts_aggregated_from_canisters_on_this_network_for_hot_or_not_feed_cursor : ( nat64, nat64, opt bool, opt PostStatus, - ) -> (Result_1) query; + opt NsfwFilter, + ) -> (Result) query; get_well_known_principal_value : (KnownPrincipalType) -> ( opt principal, ) query; + http_request : (HttpRequest) -> (HttpResponse) query; receive_top_home_feed_posts_from_publishing_canister : ( vec PostScoreIndexItemV1, ) -> (); @@ -86,4 +87,4 @@ service : (PostCacheInitArgs) -> { remove_all_feed_entries : () -> (); update_post_home_feed : (PostScoreIndexItemV1) -> (); update_post_hot_or_not_feed : (PostScoreIndexItemV1) -> (); -} \ No newline at end of file +} diff --git a/did/user_index.did b/did/user_index.did index e3c5fcb9..8b6dee11 100644 --- a/did/user_index.did +++ b/did/user_index.did @@ -15,6 +15,17 @@ type DefiniteCanisterSettings = record { memory_allocation : nat; compute_allocation : nat; }; +type HttpRequest = record { + url : text; + method : text; + body : vec nat8; + headers : vec record { text; text }; +}; +type HttpResponse = record { + body : vec nat8; + headers : vec record { text; text }; + status_code : nat16; +}; type KnownPrincipalType = variant { CanisterIdUserIndex; CanisterIdPlatformOrchestrator; @@ -93,22 +104,28 @@ service : (UserIndexInitArgs) -> { opt principal, ) -> (principal); get_subnet_available_capacity : () -> (nat64) query; + get_subnet_backup_capacity : () -> (nat64) query; get_user_canister_id_from_unique_user_name : (text) -> (opt principal) query; get_user_canister_id_from_user_principal_id : (principal) -> ( opt principal, ) query; + get_user_canister_incl_avail_list : () -> (vec principal) query; + get_user_canister_list : () -> (vec principal) query; get_user_canister_status : (principal) -> (Result_1); get_user_index_canister_count : () -> (nat64) query; get_user_index_canister_cycle_balance : () -> (nat) query; get_well_known_principal_value : (KnownPrincipalType) -> ( opt principal, ) query; + http_request : (HttpRequest) -> (HttpResponse) query; receive_data_from_backup_canister_and_restore_data_to_heap : ( principal, principal, text, ) -> (); + reclaim_cycles_from_individual_canisters : () -> (); reset_user_individual_canisters : (vec principal) -> (Result); + return_cycles_to_platform_orchestrator_canister : () -> (Result); set_permission_to_upgrade_individual_canisters : (bool) -> (text); start_upgrades_for_individual_canisters : (text, vec nat8) -> (text); toggle_signups_enabled : () -> (Result_2); @@ -116,10 +133,11 @@ service : (UserIndexInitArgs) -> { text, principal, ) -> (Result_3); + update_profile_owner_for_individual_canisters : () -> (); upgrade_specific_individual_user_canister_with_latest_wasm : ( principal, - principal, + opt principal, opt CanisterInstallMode, ) -> (text); validate_reset_user_individual_canisters : (vec principal) -> (Result) query; -} \ No newline at end of file +} diff --git a/src/page/post_view/video_iter.rs b/src/page/post_view/video_iter.rs index 503857e0..82f6a00e 100644 --- a/src/page/post_view/video_iter.rs +++ b/src/page/post_view/video_iter.rs @@ -5,7 +5,10 @@ use futures::{stream::FuturesOrdered, Stream, StreamExt}; use serde::{Deserialize, Serialize}; use crate::{ - canister::{individual_user_template::PostDetailsForFrontend, post_cache}, + canister::{ + individual_user_template::PostDetailsForFrontend, + post_cache::{self, NsfwFilter}, + }, state::canisters::Canisters, utils::profile::propic_from_principal, }; @@ -145,11 +148,16 @@ impl<'a, const AUTH: bool> VideoFetchStream<'a, AUTH> { .get_top_posts_aggregated_from_canisters_on_this_network_for_hot_or_not_feed_cursor( self.cursor.start, self.cursor.limit, - if allow_nsfw { None } else { Some(false) }, None, + None, + Some(if allow_nsfw { + NsfwFilter::IncludeNsfw + } else { + NsfwFilter::ExcludeNsfw + }), ); // TODO: error handling - let post_cache::Result1::Ok(top_posts) = top_posts_fut.await? else { + let post_cache::Result_::Ok(top_posts) = top_posts_fut.await? else { return Err(PostViewError::Canister( "canister refused to send posts".into(), )); diff --git a/src/page/refer_earn/history.rs b/src/page/refer_earn/history.rs index 715eed17..32856de0 100644 --- a/src/page/refer_earn/history.rs +++ b/src/page/refer_earn/history.rs @@ -128,7 +128,7 @@ mod history_provider { from: usize, end: usize, ) -> Result, AgentError> { - use crate::canister::individual_user_template::{MintEvent, Result5, TokenEvent}; + use crate::canister::individual_user_template::{MintEvent, Result7, TokenEvent}; use crate::utils::route::failure_redirect; let individual = self.0.authenticated_user(); let history = individual @@ -138,8 +138,8 @@ mod history_provider { ) .await?; let history = match history { - Result5::Ok(history) => history, - Result5::Err(_) => { + Result7::Ok(history) => history, + Result7::Err(_) => { failure_redirect("failed to get posts"); return Ok(PageEntry { data: vec![], diff --git a/src/page/root.rs b/src/page/root.rs index 91f951d3..634008e8 100644 --- a/src/page/root.rs +++ b/src/page/root.rs @@ -12,7 +12,13 @@ async fn get_top_post_id() -> Result, ServerFnError> { let post_cache = canisters.post_cache(); let top_items = match post_cache - .get_top_posts_aggregated_from_canisters_on_this_network_for_hot_or_not_feed(0, 1) + .get_top_posts_aggregated_from_canisters_on_this_network_for_home_feed_cursor( + 0, + 1, + None, + None, + Some(post_cache::NsfwFilter::ExcludeNsfw), + ) .await? { post_cache::Result_::Ok(items) => items, diff --git a/src/page/wallet/txn.rs b/src/page/wallet/txn.rs index 0cf6c7e0..1efda083 100644 --- a/src/page/wallet/txn.rs +++ b/src/page/wallet/txn.rs @@ -148,9 +148,8 @@ pub mod provider { #[cfg(not(feature = "mock-wallet-history"))] mod canister { use super::{Canisters, CursoredDataProvider, TxnInfo, TxnTag}; - use crate::canister::individual_user_template::Result5; use crate::canister::individual_user_template::{ - HotOrNotOutcomePayoutEvent, MintEvent, TokenEvent, + HotOrNotOutcomePayoutEvent, MintEvent, Result7, TokenEvent, }; use crate::component::infinite_scroller::PageEntry; use ic_agent::AgentError; @@ -209,8 +208,8 @@ pub mod provider { ) .await?; let history = match history { - Result5::Ok(v) => v, - Result5::Err(_) => vec![], + Result7::Ok(v) => v, + Result7::Err(_) => vec![], }; let list_end = history.len() < (end - start); Ok(PageEntry { diff --git a/src/utils/profile.rs b/src/utils/profile.rs index 63161d79..0af1a5d8 100644 --- a/src/utils/profile.rs +++ b/src/utils/profile.rs @@ -4,7 +4,7 @@ use serde::{Deserialize, Serialize}; use crate::{ canister::individual_user_template::{ - BetDirection, BetOutcomeForBetMaker, PlacedBetDetail, PostDetailsForFrontend, Result4, + BetDirection, BetOutcomeForBetMaker, PlacedBetDetail, PostDetailsForFrontend, Result5, UserProfileDetailsForFrontend, }, component::infinite_scroller::{CursoredDataProvider, KeyedData, PageEntry}, @@ -188,8 +188,8 @@ impl CursoredDataProvider for PostsProvider { .get_posts_of_this_user_profile_with_pagination(start as u64, end as u64) .await?; let posts = match posts { - Result4::Ok(v) => v, - Result4::Err(_) => { + Result5::Ok(v) => v, + Result5::Err(_) => { log::warn!("failed to get posts"); return Ok(PageEntry { data: vec![],