From b80838d5ca6dd664c7556f7b02e5f84217f106d7 Mon Sep 17 00:00:00 2001 From: Step7750 Date: Thu, 4 Apr 2024 09:13:38 -0600 Subject: [PATCH] Allows Proving Trade with Token --- src/lib/bridge/handlers/handlers.ts | 2 ++ src/lib/bridge/handlers/prove_trades_token.ts | 25 +++++++++++++++++ src/lib/bridge/handlers/types.ts | 1 + .../components/trade_history/trade_proof.ts | 27 +++++++++++-------- 4 files changed, 44 insertions(+), 11 deletions(-) create mode 100644 src/lib/bridge/handlers/prove_trades_token.ts diff --git a/src/lib/bridge/handlers/handlers.ts b/src/lib/bridge/handlers/handlers.ts index 6a694c71..86059dae 100644 --- a/src/lib/bridge/handlers/handlers.ts +++ b/src/lib/bridge/handlers/handlers.ts @@ -15,6 +15,7 @@ import {ExtensionVersion} from './extension_version'; import {SendCookies} from './send_cookies'; import {HasPermissions} from './has_permissions'; import {MetaSettings} from './meta_settings'; +import {ProveTradesToken} from './prove_trades_token'; export const HANDLERS_MAP: {[key in RequestType]: RequestHandler} = { [RequestType.EXECUTE_SCRIPT_ON_PAGE]: ExecuteScriptOnPage, @@ -32,4 +33,5 @@ export const HANDLERS_MAP: {[key in RequestType]: RequestHandler} = { [RequestType.SEND_COOKIES]: SendCookies, [RequestType.HAS_PERMISSIONS]: HasPermissions, [RequestType.META_SETTINGS]: MetaSettings, + [RequestType.PROVE_TRADES_TOKEN]: ProveTradesToken, }; diff --git a/src/lib/bridge/handlers/prove_trades_token.ts b/src/lib/bridge/handlers/prove_trades_token.ts new file mode 100644 index 00000000..3e586c51 --- /dev/null +++ b/src/lib/bridge/handlers/prove_trades_token.ts @@ -0,0 +1,25 @@ +import {EmptyRequestHandler, SimpleHandler} from './main'; +import {RequestType} from './types'; + +export interface ProveTradesTokenRequest { + token: string; +} + +export interface ProveTradesTokenResponse { + message: string; +} + +export const ProveTradesToken = new SimpleHandler( + RequestType.PROVE_TRADES_TOKEN, + async (req) => { + const resp = await fetch(`https://csfloat.com/api/v1/trades/prove-token?token=${req.token}`, { + credentials: 'include', + }); + + if (resp.status !== 200) { + throw new Error('failed to prove, are you logged into CSFloat?'); + } + + return resp.json() as Promise; + } +); diff --git a/src/lib/bridge/handlers/types.ts b/src/lib/bridge/handlers/types.ts index d4d275f4..0e44554a 100644 --- a/src/lib/bridge/handlers/types.ts +++ b/src/lib/bridge/handlers/types.ts @@ -14,4 +14,5 @@ export enum RequestType { SEND_COOKIES, HAS_PERMISSIONS, META_SETTINGS, + PROVE_TRADES_TOKEN, } diff --git a/src/lib/components/trade_history/trade_proof.ts b/src/lib/components/trade_history/trade_proof.ts index 014badee..e73b01bf 100644 --- a/src/lib/components/trade_history/trade_proof.ts +++ b/src/lib/components/trade_history/trade_proof.ts @@ -5,12 +5,14 @@ import {CustomElement, InjectAppend, InjectionMode} from '../injectors'; import {FloatElement} from '../custom'; import {fetchListingTime} from './helpers'; import '../common/ui/steam-button'; +import {ProveTradesToken} from '../../bridge/handlers/prove_trades_token'; +import {ClientSend} from '../../bridge/client'; @CustomElement() @InjectAppend('.tradehistoryrow .tradehistory_content', InjectionMode.CONTINUOUS) export class TradeProof extends FloatElement { @state() - private proofNumber: number | undefined; + private message: string | undefined; @state() private isProcessing = false; @@ -20,12 +22,12 @@ export class TradeProof extends FloatElement { } render() { - return this.proofNumber - ? html` Proof: ${this.proofNumber} ` + return this.message + ? html` ${this.message} ` : html` `; @@ -34,14 +36,17 @@ export class TradeProof extends FloatElement { private async onClick() { this.isProcessing = true; - const index = $J('.tradehistoryrow').index($J(this).parent().parent()); + const token = document + .getElementById('application_config') + ?.getAttribute('data-loyalty_webapi_token') + ?.replace('"', '') + .replace('"', ''); + try { - this.proofNumber = await fetchListingTime(index); - } catch (e) { - alert( - "Failed to parse time, make sure you're on an english version of the page by appending ?l=english to the url" - ); + const resp = await ClientSend(ProveTradesToken, {token}); + this.message = resp.message; + } catch (e: any) { + alert(e.toString()); } - this.isProcessing = false; } }