Newer
Older
percord / src / gateway / util / Capabilities.ts
@Madeline Madeline on 3 Apr 2023 1013 bytes Respect CLIENT_STATE_V2 capability
import { BitField, BitFieldResolvable, BitFlag } from "@spacebar/util";

export type CapabilityResolvable = BitFieldResolvable | CapabilityString;
type CapabilityString = keyof typeof Capabilities.FLAGS;

export class Capabilities extends BitField {
	static FLAGS = {
		// Thanks, Opencord!
		// https://github.com/MateriiApps/OpenCord/blob/master/app/src/main/java/com/xinto/opencord/gateway/io/Capabilities.kt
		LAZY_USER_NOTES: BitFlag(0),
		NO_AFFINE_USER_IDS: BitFlag(1),
		VERSIONED_READ_STATES: BitFlag(2),
		VERSIONED_USER_GUILD_SETTINGS: BitFlag(3),
		DEDUPLICATE_USER_OBJECTS: BitFlag(4),
		PRIORITIZED_READY_PAYLOAD: BitFlag(5),
		MULTIPLE_GUILD_EXPERIMENT_POPULATIONS: BitFlag(6),
		NON_CHANNEL_READ_STATES: BitFlag(7),
		AUTH_TOKEN_REFRESH: BitFlag(8),
		USER_SETTINGS_PROTO: BitFlag(9),
		CLIENT_STATE_V2: BitFlag(10),
		PASSIVE_GUILD_UPDATE: BitFlag(11),
	};

	any = (capability: CapabilityResolvable) => super.any(capability);
	has = (capability: CapabilityResolvable) => super.has(capability);
}