PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 3.3.1
GiveWP – Donation Plugin and Fundraising Platform v3.3.1
4.16.7 4.16.6.1 4.16.6 4.16.5.1 4.16.5 4.16.4 4.16.3 4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / src / DonationForms / resources / registrars / gateways / index.ts
give / src / DonationForms / resources / registrars / gateways Last commit date
index.ts 2 years ago
index.ts
72 lines
1 import {Gateway, RegisteredGateway} from '@givewp/forms/types';
2
3 const {registeredGateways} = window.givewpDonationFormExports;
4
5 /**
6 * @since 3.0.0
7 */
8 interface GatewayRegistrar {
9 register(gateway: Gateway): void;
10
11 getAll(): Gateway[];
12
13 get(id: string): Gateway | undefined;
14 }
15
16 /**
17 * @since 3.0.0
18 */
19 export default class Registrar implements GatewayRegistrar {
20 /**
21 * @since 3.0.0
22 */
23 private gateways: Gateway[] = [];
24
25 /**
26 * @since 3.0.0
27 */
28 public get(id: string): Gateway | undefined {
29 return this.gateways.find((gateway) => gateway.id === id);
30 }
31
32 /**
33 * @since 3.0.0
34 */
35 public getAll(): Gateway[] {
36 return this.gateways;
37 }
38
39 /**
40 * @since 3.0.0
41 */
42 public register(gateway: Gateway): void {
43 const registeredGateway = registeredGateways?.find(({id}) => id === gateway.id);
44
45 this.mapRegisteredGatewayToClientGateway(registeredGateway, gateway);
46
47 if (gateway.hasOwnProperty('initialize')) {
48 try {
49 gateway.initialize();
50 } catch (e) {
51 console.error(`Error initializing ${gateway.id} gateway:`, e);
52 // TODO: decide what to do if a gateway fails to initialize
53 // we can hide the fields from the list or display an error message.
54 // for now we will just display the error message, but in the future
55 // it might be better to hide the fields all together by returning early here.
56 //return;
57 }
58 }
59
60 this.gateways.push(gateway);
61 }
62
63 /**
64 * @since 3.0.0
65 */
66 private mapRegisteredGatewayToClientGateway(registeredGateway: RegisteredGateway, clientGateway: Gateway): void {
67 for (const [key, value] of Object.entries(registeredGateway)) {
68 clientGateway[key] = value;
69 }
70 }
71 }
72