Skip to content

Commit

Permalink
feat: Add policy field to WebPushSubscription
Browse files Browse the repository at this point in the history
  • Loading branch information
neet committed Jan 26, 2023
1 parent 63c3542 commit 20ccc90
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 3 deletions.
11 changes: 11 additions & 0 deletions src/mastodon/v1/entities/web-push-subscription.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,12 @@
export type WebPushSubscriptionPolicy =
| 'all'
| 'followed'
| 'follower'
| 'none';

/** @deprecated Use WebPushSubscriptionPolicy */
export type SubscriptionPolicy = WebPushSubscriptionPolicy;

/**
* Represents a subscription to the push streaming server.
* @see https://docs.joinmastodon.org/entities/WebPushSubscription/
Expand All @@ -11,6 +20,8 @@ export interface WebPushSubscription {
serverKey: string;
/** Which alerts should be delivered to the `endpoint`. */
alerts: WebPushSubscriptionAlerts;
/* Which type of notification should be included */
policy: WebPushSubscriptionPolicy;
}

export interface WebPushSubscriptionAlerts {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,9 @@ import type { Repository } from '../../repository';
import type {
WebPushSubscription,
WebPushSubscriptionAlerts,
WebPushSubscriptionPolicy,
} from '../entities';

export type SubscriptionPolicy = 'all' | 'followed' | 'follower' | 'none';

export interface CreateWebPushSubscriptionParams {
readonly subscription: {
/** Endpoint URL that is called when a notification event occurs. */
Expand All @@ -25,7 +24,7 @@ export interface CreateWebPushSubscriptionParams {
readonly data?: {
readonly alerts?: Partial<WebPushSubscriptionAlerts> | null;
} | null;
readonly policy: SubscriptionPolicy;
readonly policy: WebPushSubscriptionPolicy;
}

export type UpdateWebPushSubscriptionParams = Pick<
Expand Down
26 changes: 26 additions & 0 deletions tests/v1/subscription.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
import crypto from 'node:crypto';

describe('subscription', () => {
it('can subscribe', async () => {
const ecdh = crypto.createECDH('prime256v1');
const auth = crypto.randomBytes(16).toString('base64');
const p256dh = ecdh.getPublicKey().toString('base64');

const { id } = await admin.v1.webPushSubscriptions.create({
subscription: {
endpoint: 'https://example.com',
keys: {
p256dh,
auth,
},
},
policy: 'all',
});

const subscription = await admin.v1.webPushSubscriptions.fetch();

expect(subscription.id).toBe(id);
expect(subscription.endpoint).toBe('https://example.com');
expect(subscription.policy).toBe('all');
});
});

0 comments on commit 20ccc90

Please sign in to comment.