2019-01-16 14:26:45 -08:00
|
|
|
import {
|
|
|
|
EmailSubscriptions,
|
|
|
|
EmailSubscriptionInfo,
|
|
|
|
EmailSubscriptionCategoryInfo,
|
|
|
|
EMAIL_SUBSCRIPTION_CATEGORY,
|
|
|
|
} from 'types';
|
|
|
|
|
|
|
|
type ESKey = keyof EmailSubscriptions;
|
|
|
|
export const EMAIL_SUBSCRIPTIONS: { [key in ESKey]: EmailSubscriptionInfo } = {
|
|
|
|
// GENERAL
|
|
|
|
myCommentReply: {
|
|
|
|
description: 'your comment responses',
|
|
|
|
category: EMAIL_SUBSCRIPTION_CATEGORY.GENERAL,
|
|
|
|
value: false,
|
|
|
|
},
|
2019-02-06 12:56:21 -08:00
|
|
|
arbiter: {
|
|
|
|
description: 'arbitration',
|
|
|
|
category: EMAIL_SUBSCRIPTION_CATEGORY.GENERAL,
|
|
|
|
value: false,
|
|
|
|
},
|
2019-01-16 14:26:45 -08:00
|
|
|
|
|
|
|
// FUNDED
|
|
|
|
fundedProposalCanceled: {
|
|
|
|
description: 'gets canceled',
|
|
|
|
category: EMAIL_SUBSCRIPTION_CATEGORY.FUNDED,
|
|
|
|
value: false,
|
|
|
|
},
|
|
|
|
fundedProposalContribution: {
|
|
|
|
description: 'your contribution is confirmed',
|
|
|
|
category: EMAIL_SUBSCRIPTION_CATEGORY.FUNDED,
|
|
|
|
value: false,
|
|
|
|
},
|
|
|
|
fundedProposalFunded: {
|
|
|
|
description: 'gets full funding',
|
|
|
|
category: EMAIL_SUBSCRIPTION_CATEGORY.FUNDED,
|
|
|
|
value: false,
|
|
|
|
},
|
|
|
|
fundedProposalPayoutRequest: {
|
|
|
|
description: 'has a payout request',
|
|
|
|
category: EMAIL_SUBSCRIPTION_CATEGORY.FUNDED,
|
|
|
|
value: false,
|
|
|
|
},
|
|
|
|
fundedProposalUpdate: {
|
|
|
|
description: 'has an update',
|
|
|
|
category: EMAIL_SUBSCRIPTION_CATEGORY.FUNDED,
|
|
|
|
value: false,
|
|
|
|
},
|
|
|
|
|
|
|
|
// MY PROPOSAL
|
|
|
|
myProposalApproval: {
|
|
|
|
description: 'is approved or rejected',
|
|
|
|
category: EMAIL_SUBSCRIPTION_CATEGORY.PROPOSAL,
|
|
|
|
value: false,
|
|
|
|
},
|
|
|
|
myProposalComment: {
|
|
|
|
description: 'is commented on',
|
|
|
|
category: EMAIL_SUBSCRIPTION_CATEGORY.PROPOSAL,
|
|
|
|
value: false,
|
|
|
|
},
|
|
|
|
myProposalContribution: {
|
|
|
|
description: 'gets a contribution',
|
|
|
|
category: EMAIL_SUBSCRIPTION_CATEGORY.PROPOSAL,
|
|
|
|
value: false,
|
|
|
|
},
|
|
|
|
myProposalFunded: {
|
|
|
|
description: 'gets fully funded',
|
|
|
|
category: EMAIL_SUBSCRIPTION_CATEGORY.PROPOSAL,
|
|
|
|
value: false,
|
|
|
|
},
|
|
|
|
myProposalRefund: {
|
|
|
|
description: 'gets refunded',
|
|
|
|
category: EMAIL_SUBSCRIPTION_CATEGORY.PROPOSAL,
|
|
|
|
value: false,
|
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
export const EMAIL_SUBSCRIPTION_CATEGORIES: {
|
|
|
|
[key in EMAIL_SUBSCRIPTION_CATEGORY]: EmailSubscriptionCategoryInfo
|
|
|
|
} = {
|
|
|
|
[EMAIL_SUBSCRIPTION_CATEGORY.GENERAL]: { description: 'General' },
|
|
|
|
[EMAIL_SUBSCRIPTION_CATEGORY.PROPOSAL]: { description: 'Your Proposals' },
|
|
|
|
[EMAIL_SUBSCRIPTION_CATEGORY.FUNDED]: {
|
|
|
|
description: 'Proposals you have contributed to',
|
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
export const groupEmailSubscriptionsByCategory = (es: EmailSubscriptions) => {
|
|
|
|
return Object.entries(EMAIL_SUBSCRIPTION_CATEGORIES).map(([k, v]) => {
|
|
|
|
const subscriptionSettings = Object.entries(EMAIL_SUBSCRIPTIONS)
|
|
|
|
.filter(([_, sv]) => sv.category === k)
|
|
|
|
.map(([sk, sv]) => {
|
|
|
|
sv.value = es[sk as ESKey];
|
|
|
|
const svWk = sv as EmailSubscriptionInfo & { key: ESKey };
|
|
|
|
svWk.key = sk as ESKey;
|
|
|
|
return svWk;
|
|
|
|
});
|
|
|
|
|
|
|
|
const vWk = v as EmailSubscriptionCategoryInfo & { key: EMAIL_SUBSCRIPTION_CATEGORY };
|
|
|
|
vWk.key = k as EMAIL_SUBSCRIPTION_CATEGORY;
|
|
|
|
return {
|
|
|
|
category: vWk,
|
|
|
|
subscriptionSettings,
|
|
|
|
};
|
|
|
|
});
|
|
|
|
};
|