Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions src/lib/alarms/blocked_users.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import {Trade} from '../types/float_market';
import {SlimTrade} from '../types/float_market';
import {gStore} from '../storage/store';
import {StorageKey} from '../storage/keys';
import {FetchSteamUser} from '../bridge/handlers/fetch_steam_user';
import {FetchBlockedUsers} from '../bridge/handlers/fetch_blocked_users';
import {PingBlockedUsers} from '../bridge/handlers/ping_blocked_users';

export async function reportBlockedBuyers(pendingTrades: Trade[]) {
export async function reportBlockedBuyers(pendingTrades: SlimTrade[]) {
const lastPing = await gStore.getWithStorage<number>(
chrome.storage.local,
StorageKey.LAST_TRADE_BLOCKED_PING_ATTEMPT
Expand Down
10 changes: 5 additions & 5 deletions src/lib/alarms/csfloat_trade_pings.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import {Trade} from '../types/float_market';
import {FetchPendingTrades} from '../bridge/handlers/fetch_pending_trades';
import {SlimTrade} from '../types/float_market';
import {pingTradeHistory} from './trade_history';
import {cancelUnconfirmedTradeOffers, pingCancelTrades, pingSentTradeOffers} from './trade_offer';
import {HasPermissions} from '../bridge/handlers/has_permissions';
Expand All @@ -10,6 +9,7 @@ import {StorageKey} from '../storage/keys';
import {reportBlockedBuyers} from './blocked_users';
import {TradeHistoryStatus} from '../bridge/handlers/trade_history_status';
import {pingRollbackTrades} from './rollback';
import {FetchSlimTrades} from '../bridge/handlers/fetch_slim_trades';

export const PING_CSFLOAT_TRADE_STATUS_ALARM_NAME = 'ping_csfloat_trade_status_alarm';

Expand All @@ -28,9 +28,9 @@ export async function pingTradeStatus(expectedSteamID?: string) {
return;
}

let pendingTrades: Trade[];
let pendingTrades: SlimTrade[];
try {
const resp = await FetchPendingTrades.handleRequest({limit: 3000, exclude_wait_for_settlement: true}, {});
const resp = await FetchSlimTrades.handleRequest({limit: 3000}, {});
pendingTrades = resp.trades;
} catch (e) {
console.error(e);
Expand Down Expand Up @@ -75,7 +75,7 @@ interface UpdateErrors {
rollback_trades_error?: string;
}

async function pingUpdates(pendingTrades: Trade[]): Promise<UpdateErrors> {
async function pingUpdates(pendingTrades: SlimTrade[]): Promise<UpdateErrors> {
const errors: UpdateErrors = {};

try {
Expand Down
4 changes: 2 additions & 2 deletions src/lib/alarms/rollback.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import {Trade, TradeState} from '../types/float_market';
import {SlimTrade, TradeState} from '../types/float_market';
import {TradeHistoryStatus} from '../bridge/handlers/trade_history_status';
import {PingRollbackTrade} from '../bridge/handlers/ping_rollback_trade';
import {TradeStatus} from '../types/steam_constants';

export async function pingRollbackTrades(pendingTrades: Trade[], tradeHistory: TradeHistoryStatus[]) {
export async function pingRollbackTrades(pendingTrades: SlimTrade[], tradeHistory: TradeHistoryStatus[]) {
if (!pendingTrades || pendingTrades.length === 0) {
return;
}
Expand Down
4 changes: 2 additions & 2 deletions src/lib/alarms/trade_history.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import {Trade} from '../types/float_market';
import {SlimTrade, Trade} from '../types/float_market';
import {TradeHistoryStatus, TradeHistoryType} from '../bridge/handlers/trade_history_status';
import {AppId, TradeStatus} from '../types/steam_constants';
import {clearAccessTokenFromStorage, getAccessToken} from './access_token';

export async function pingTradeHistory(pendingTrades: Trade[]): Promise<TradeHistoryStatus[]> {
export async function pingTradeHistory(pendingTrades: SlimTrade[]): Promise<TradeHistoryStatus[]> {
const {history, type} = await getTradeHistory();

// premature optimization in case it's 100 trades
Expand Down
8 changes: 4 additions & 4 deletions src/lib/alarms/trade_offer.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import {TradeOfferState, TradeStatus} from '../types/steam_constants';
import {Trade, TradeState} from '../types/float_market';
import {SlimTrade, TradeState} from '../types/float_market';
import {OfferStatus, TradeOfferStatus, TradeOffersType} from '../bridge/handlers/trade_offer_status';
import {clearAccessTokenFromStorage, getAccessToken} from './access_token';
import {AnnotateOffer} from '../bridge/handlers/annotate_offer';
Expand All @@ -11,7 +11,7 @@ import {HasPermissions} from '../bridge/handlers/has_permissions';
import {convertSteamID32To64} from '../utils/userinfo';
import {TradeHistoryStatus} from '../bridge/handlers/trade_history_status';

export async function pingSentTradeOffers(pendingTrades: Trade[]) {
export async function pingSentTradeOffers(pendingTrades: SlimTrade[]) {
const {offers, type} = await getSentTradeOffers();

const offersToFind = pendingTrades.reduce(
Expand Down Expand Up @@ -68,7 +68,7 @@ export async function pingSentTradeOffers(pendingTrades: Trade[]) {
}
}

export async function pingCancelTrades(pendingTrades: Trade[], tradeHistory: TradeHistoryStatus[]) {
export async function pingCancelTrades(pendingTrades: SlimTrade[], tradeHistory: TradeHistoryStatus[]) {
const hasWaitForCancelPing = pendingTrades.find((e) => e.state === TradeState.PENDING && e.wait_for_cancel_ping);
if (!hasWaitForCancelPing) {
// Nothing to process/ping, exit
Expand Down Expand Up @@ -119,7 +119,7 @@ export async function pingCancelTrades(pendingTrades: Trade[], tradeHistory: Tra

// cancelUnconfirmedTradeOffers related to sales on CSFloat that haven't been confirmed for a while
// Helps prevent the user from sending a trade offer _way after_ the sale has already failed
export async function cancelUnconfirmedTradeOffers(pendingTrades: Trade[]) {
export async function cancelUnconfirmedTradeOffers(pendingTrades: SlimTrade[]) {
const offerIDsToCancel = [
...new Set(
pendingTrades
Expand Down
35 changes: 35 additions & 0 deletions src/lib/bridge/handlers/fetch_slim_trades.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
import {SlimTrade} from '../../types/float_market';
import {SimpleHandler} from './main';
import {RequestType} from './types';
import {environment} from '../../../environment';

export interface FetchSlimTradesRequest {
state?: string;
limit?: number;
page?: number;
}

export interface FetchSlimTradesResponse {
count: number;
trades: SlimTrade[];
}

export const FetchSlimTrades = new SimpleHandler<FetchSlimTradesRequest, FetchSlimTradesResponse>(
RequestType.FETCH_SLIM_TRADES,
async (req) => {
const state = req.state ? req.state : 'pending';
const limit = req.limit ? req.limit : 100;
const resp = await fetch(
`${environment.csfloat_base_api_url}/v1/me/trades/slim?state=${state}&limit=${limit}&page=${req.page || 0}`,
{
credentials: 'include',
}
);

if (resp.status !== 200) {
throw new Error('invalid status');
}

return resp.json() as Promise<FetchSlimTradesResponse>;
}
);
2 changes: 2 additions & 0 deletions src/lib/bridge/handlers/handlers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ import {FetchRecommendedPrice} from './fetch_recommended_price';
import {FetchCSFloatMe} from './fetch_csfloat_me';
import {PingRollbackTrade} from './ping_rollback_trade';
import {FetchTradeHistory} from './fetch_trade_history';
import {FetchSlimTrades} from './fetch_slim_trades';

export const HANDLERS_MAP: {[key in RequestType]: RequestHandler<any, any>} = {
[RequestType.EXECUTE_SCRIPT_ON_PAGE]: ExecuteScriptOnPage,
Expand Down Expand Up @@ -66,4 +67,5 @@ export const HANDLERS_MAP: {[key in RequestType]: RequestHandler<any, any>} = {
[RequestType.FETCH_CSFLOAT_ME]: FetchCSFloatMe,
[RequestType.PING_ROLLBACK_TRADE]: PingRollbackTrade,
[RequestType.FETCH_TRADE_HISTORY]: FetchTradeHistory,
[RequestType.FETCH_SLIM_TRADES]: FetchSlimTrades,
};
1 change: 1 addition & 0 deletions src/lib/bridge/handlers/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,4 +31,5 @@ export enum RequestType {
FETCH_CSFLOAT_ME = 29,
PING_ROLLBACK_TRADE = 30,
FETCH_TRADE_HISTORY = 31,
FETCH_SLIM_TRADES = 32,
}
14 changes: 14 additions & 0 deletions src/lib/types/float_market.ts
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,7 @@ export interface Trade {
id: string;
accepted_at?: string;
buyer: User;
seller: User;
buyer_id: string;
contract: Contract;
contract_id: string;
Expand All @@ -107,3 +108,16 @@ export interface Trade {
seller_blocked_buyer_at?: string;
buyer_blocked_seller_at?: string;
}

export interface SlimItem {
asset_id: string;
market_hash_name: string;
}

export interface SlimContract {
item: SlimItem;
}

export interface SlimTrade extends Omit<Trade, 'buyer' | 'seller' | 'contract' | 'trade_url'> {
contract: SlimContract;
}