From fe1376a70ce319d1f5ba02612999827da27142fb Mon Sep 17 00:00:00 2001 From: mbecker20 Date: Tue, 8 Aug 2023 03:52:50 -0400 Subject: [PATCH] SetLastSeenUpdate --- bin/core/src/requests/write/mod.rs | 1 + bin/core/src/requests/write/user.rs | 29 +++++++++++++++++++++++++++- client/ts/src/responses.ts | 1 + client/ts/src/types.ts | 7 +++++++ lib/types/src/requests/write/user.rs | 13 +++++++++++++ 5 files changed, 50 insertions(+), 1 deletion(-) diff --git a/bin/core/src/requests/write/mod.rs b/bin/core/src/requests/write/mod.rs index 816145b71..8ca62c11b 100644 --- a/bin/core/src/requests/write/mod.rs +++ b/bin/core/src/requests/write/mod.rs @@ -39,6 +39,7 @@ enum WriteRequest { // ==== USER ==== PushRecentlyViewed(PushRecentlyViewed), + SetLastSeenUpdate(SetLastSeenUpdate), // ==== PERMISSIONS ==== UpdateUserPerimissions(UpdateUserPermissions), diff --git a/bin/core/src/requests/write/user.rs b/bin/core/src/requests/write/user.rs index 1fb5c6a96..6463d5282 100644 --- a/bin/core/src/requests/write/user.rs +++ b/bin/core/src/requests/write/user.rs @@ -2,7 +2,13 @@ use std::collections::VecDeque; use anyhow::Context; use async_trait::async_trait; -use monitor_types::requests::write::{PushRecentlyViewed, PushRecentlyViewedResponse}; +use monitor_types::{ + monitor_timestamp, + requests::write::{ + PushRecentlyViewed, PushRecentlyViewedResponse, SetLastSeenUpdate, + SetLastSeenUpdateResponse, + }, +}; use mungos::mongodb::bson::{doc, to_bson}; use resolver_api::Resolve; @@ -49,3 +55,24 @@ impl Resolve for State { Ok(PushRecentlyViewedResponse {}) } } + +#[async_trait] +impl Resolve for State { + async fn resolve( + &self, + SetLastSeenUpdate {}: SetLastSeenUpdate, + user: RequestUser, + ) -> anyhow::Result { + self.db + .users + .update_one( + &user.id, + mungos::Update::Set(doc! { + "last_update_view": monitor_timestamp() + }), + ) + .await + .context("failed to update user last_update_view")?; + Ok(SetLastSeenUpdateResponse {}) + } +} diff --git a/client/ts/src/responses.ts b/client/ts/src/responses.ts index ead7eacb4..407e8b3ee 100644 --- a/client/ts/src/responses.ts +++ b/client/ts/src/responses.ts @@ -90,6 +90,7 @@ export type WriteResponses = { // ==== USER ==== PushRecentlyViewed: Types.PushRecentlyViewedResponse; + SetLastSeenUpdate: Types.SetLastSeenUpdateResponse; // ==== PERMISSIONS ==== UpdateUserPerimissions: Types.Update; diff --git a/client/ts/src/types.ts b/client/ts/src/types.ts index f7a8b5422..9ca9f6cab 100644 --- a/client/ts/src/types.ts +++ b/client/ts/src/types.ts @@ -1279,6 +1279,12 @@ export interface PushRecentlyViewed { export interface PushRecentlyViewedResponse { } +export interface SetLastSeenUpdate { +} + +export interface SetLastSeenUpdateResponse { +} + export type AuthRequest = | { type: "GetLoginOptions", params: GetLoginOptions } | { type: "CreateLocalUser", params: CreateLocalUser } @@ -1356,6 +1362,7 @@ export type WriteRequest = | { type: "CreateLoginSecret", params: CreateLoginSecret } | { type: "DeleteLoginSecret", params: DeleteLoginSecret } | { type: "PushRecentlyViewed", params: PushRecentlyViewed } + | { type: "SetLastSeenUpdate", params: SetLastSeenUpdate } | { type: "UpdateUserPerimissions", params: UpdateUserPermissions } | { type: "UpdateUserPermissionsOnTarget", params: UpdateUserPermissionsOnTarget } | { type: "UpdateDescription", params: UpdateDescription } diff --git a/lib/types/src/requests/write/user.rs b/lib/types/src/requests/write/user.rs index 45235f33e..525496d88 100644 --- a/lib/types/src/requests/write/user.rs +++ b/lib/types/src/requests/write/user.rs @@ -4,6 +4,8 @@ use typeshare::typeshare; use crate::entities::update::ResourceTarget; +// + #[typeshare] #[derive(Serialize, Deserialize, Debug, Clone, Request)] #[response(PushRecentlyViewedResponse)] @@ -14,3 +16,14 @@ pub struct PushRecentlyViewed { #[typeshare] #[derive(Serialize, Deserialize, Debug, Clone)] pub struct PushRecentlyViewedResponse {} + +// + +#[typeshare] +#[derive(Serialize, Deserialize, Debug, Clone, Request)] +#[response(SetLastSeenUpdateResponse)] +pub struct SetLastSeenUpdate {} + +#[typeshare] +#[derive(Serialize, Deserialize, Debug, Clone)] +pub struct SetLastSeenUpdateResponse {}