big websocket change
This commit is contained in:
1 parent
0e3c272adc
commit
73248f7d9f
12 files changed
+126
-99
No files matched your search
@@ -118,11 +118,34 @@ export default function createOffers(log: Log, pg: Pg) {
|
||||
});
|
||||
}
|
||||
|
||||
async function acpOffers() {
|
||||
const offers = await pg.offersAdmin();
|
||||
|
||||
const grouped = groupBy(offers, o => o.listing.data.seller.id);
|
||||
|
||||
const sellerOffers = sortBy(Object.values(grouped).map(offers => {
|
||||
const shipping = offers[0]?.listing.data.seller.shipping;
|
||||
const bundle = {
|
||||
username: offers[0]?.listing.data.seller.username,
|
||||
seller: offers[0]?.listing.data.seller.id,
|
||||
shipsFrom: offers[0]?.listing.data.ships_from,
|
||||
shipping,
|
||||
offers,
|
||||
mentionsAustralia: shipping.toLowerCase().includes('australia'),
|
||||
mentionsWorldwide: shipping.toLowerCase().includes('world'),
|
||||
}
|
||||
|
||||
return bundle;
|
||||
}), bundle => -bundle.offers.length);
|
||||
|
||||
return sellerOffers;
|
||||
}
|
||||
|
||||
return {
|
||||
generate,
|
||||
accept,
|
||||
bundles,
|
||||
statusSet,
|
||||
acpOffers,
|
||||
};
|
||||
}
|
||||
+34
-1
@@ -8,6 +8,7 @@ import type { Want, Offer, User } from '@prisma/client';
|
||||
|
||||
import { Pg } from './pg';
|
||||
import { Status } from './offers';
|
||||
import { isAdmin } from './utils';
|
||||
|
||||
function checkMsgType(msgType: RpcMessageType): msgType is RpcMessageType {
|
||||
if (RpcMessageType[msgType]) {
|
||||
@@ -28,7 +29,9 @@ export default function createRpc(log: Log, pg: Pg, user: User, ws, discogs, off
|
||||
assert(Status[status], 'unknown status');
|
||||
|
||||
const offer = await offers.statusSet(user, id, status);
|
||||
return [RpcMessageType.Offers, []]
|
||||
const userOffers = await pg.userOffers(user);
|
||||
|
||||
return [RpcMessageType.Offers, userOffers]
|
||||
}
|
||||
|
||||
async function wantRm(params: WantRmParams): Promise<WantsMessage> {
|
||||
@@ -41,6 +44,22 @@ export default function createRpc(log: Log, pg: Pg, user: User, ws, discogs, off
|
||||
return [RpcMessageType.Wants, wants];
|
||||
}
|
||||
|
||||
async function acpOfferStatusSet(params: OfferStatusSetParams): Promise<AcpOffersMessage> {
|
||||
const { id, status } = params;
|
||||
assert(isAdmin(user), 'not authorised');
|
||||
assert(id, 'no id supplied');
|
||||
assert(Status[status], 'unknown status');
|
||||
|
||||
const offer = await offers.statusSet(user, id, status);
|
||||
|
||||
return [RpcMessageType.AcpOffers, await offers.acpOffers()]
|
||||
}
|
||||
|
||||
async function acpOffers(): Promise<AcpOffersMessage> {
|
||||
assert(isAdmin(user), 'not authorised');
|
||||
return [RpcMessageType.AcpOffers, await offers.acpOffers()];
|
||||
}
|
||||
|
||||
async function receive(message: any): Promise<RpcMessage> {
|
||||
const [msgType, params] = message;
|
||||
|
||||
@@ -53,6 +72,10 @@ export default function createRpc(log: Log, pg: Pg, user: User, ws, discogs, off
|
||||
return ping();
|
||||
case RpcMessageType.OfferStatusSet:
|
||||
return offerStatusSet(params);
|
||||
case RpcMessageType.AcpOfferStatusSet:
|
||||
return acpOfferStatusSet(params);
|
||||
case RpcMessageType.AcpOffers:
|
||||
return acpOffers();
|
||||
case RpcMessageType.WantRm:
|
||||
return wantRm(params);
|
||||
default:
|
||||
@@ -103,6 +126,9 @@ export enum RpcMessageType {
|
||||
|
||||
OfferStatusSet = 'OfferStatusSet',
|
||||
|
||||
AcpOfferStatusSet = 'AcpOfferStatusSet',
|
||||
AcpOffers = 'AcpOffers',
|
||||
|
||||
WantRm = 'WantRm',
|
||||
}
|
||||
|
||||
@@ -114,6 +140,9 @@ type WantsMessage = [RpcMessageType.Wants, Want[]];
|
||||
type OffersMessage = [RpcMessageType.Offers, Offer[]];
|
||||
type OfferStatusSetMessage = [RpcMessageType.OfferStatusSet, Offer[]];
|
||||
|
||||
type AcpOfferStatusSetMessage = [RpcMessageType.AcpOfferStatusSet, Offer[]];
|
||||
type AcpOffersMessage = [RpcMessageType.AcpOffers, Offer[]];
|
||||
|
||||
export type RpcMessage =
|
||||
PingMessage |
|
||||
PongMessage |
|
||||
@@ -124,6 +153,10 @@ export type RpcMessage =
|
||||
|
||||
OffersMessage |
|
||||
OfferStatusSetMessage |
|
||||
|
||||
AcpOfferStatusSetMessage |
|
||||
AcpOffersMessage |
|
||||
|
||||
ErrorMessage;
|
||||
|
||||
|
||||
|
||||
+5
-1
@@ -1,4 +1,4 @@
|
||||
import type { Want } from '@prisma/client';
|
||||
import type { Want, User } from '@prisma/client';
|
||||
|
||||
export function logAxiosError(e) {
|
||||
console.warn({
|
||||
@@ -25,4 +25,8 @@ export function wantDetails(want: Want) {
|
||||
}
|
||||
}
|
||||
|
||||
export function isAdmin(user: User) {
|
||||
return user.email === 'ntr@mnml.gg';
|
||||
}
|
||||
|
||||
export function offerDetails() {}
|
||||
Reference in new issue
Block a user