From 4c0e3865ca7fc78ce4e46ae2e46ccda7999ed35f Mon Sep 17 00:00:00 2001 From: Tom Date: Thu, 20 Mar 2025 12:30:25 -0400 Subject: [PATCH] multiple count configs into one array and a static validator method --- .../config/item-created-count-config.ts | 155 +++++++----------- .../config/send-created-count-config.ts | 26 +-- .../send-item-created-count-validator.ts | 4 + .../vault-item-created-count-validator.ts | 4 + 4 files changed, 72 insertions(+), 117 deletions(-) diff --git a/libs/common/src/tools/achievements/validators/config/item-created-count-config.ts b/libs/common/src/tools/achievements/validators/config/item-created-count-config.ts index 73698f81b9a..2ee67371e04 100644 --- a/libs/common/src/tools/achievements/validators/config/item-created-count-config.ts +++ b/libs/common/src/tools/achievements/validators/config/item-created-count-config.ts @@ -9,107 +9,68 @@ import { Achievement, AchievementId, MetricId } from "../../types"; */ export class ItemCreatedCountConfig implements Achievement { // Define the achievements here + static readonly AllConfigs: ItemCreatedCountConfig[] = [ + // Any vault items added + new ItemCreatedCountConfig("vault-item-created", "1st item added", 1), + new ItemCreatedCountConfig("vault-items-created-ten", "10 items created", 10), + new ItemCreatedCountConfig("vault-items-created-fifty", "50 items created", 50), + new ItemCreatedCountConfig("vault-items-created-one-hundred", "100 items created", 100), - // Any vault items added - static readonly ItemCreated = new ItemCreatedCountConfig( - "vault-item-created", - "1st item added", - 1, - ); - static readonly ItemsCreated10 = new ItemCreatedCountConfig( - "vault-items-created-ten", - "10 items created", - 10, - ); - static readonly ItemsCreated50 = new ItemCreatedCountConfig( - "vault-items-created-fifty", - "50 items created", - 50, - ); - static readonly ItemsCreated100 = new ItemCreatedCountConfig( - "vault-items-created-one-hundred", - "100 items created", - 100, - ); + // Login items added + new ItemCreatedCountConfig("login-item-created", "1st login item added", 1, CipherType.Login), + new ItemCreatedCountConfig( + "login-item-created-ten", + "10 login items added", + 10, + CipherType.Login, + ), + new ItemCreatedCountConfig( + "login-item-created-fifty", + "50 login items added", + 50, + CipherType.Login, + ), + new ItemCreatedCountConfig( + "login-item-created-one-hundred", + "100 login items added", + 100, + CipherType.Login, + ), - // Login items added - static readonly LoginItemCreated = new ItemCreatedCountConfig( - "login-item-created", - "1st login item added", - 1, - CipherType.Login, - ); - static readonly LoginItemCreated10 = new ItemCreatedCountConfig( - "login-item-created-ten", - "10 login items added", - 10, - CipherType.Login, - ); - static readonly LoginItemCreated50 = new ItemCreatedCountConfig( - "login-item-created-fifty", - "50 login items added", - 50, - CipherType.Login, - ); - static readonly LoginItemCreated100 = new ItemCreatedCountConfig( - "login-item-created-one-hundred", - "100 login items added", - 100, - CipherType.Login, - ); + // Card items + new ItemCreatedCountConfig("card-item-created", "1st card item added", 1, CipherType.Card), + new ItemCreatedCountConfig("card-item-created-3", "3rd card items added", 3, CipherType.Card), + new ItemCreatedCountConfig("card-item-created-5", "5th card item added", 5, CipherType.Card), - // Card items - static readonly CardItemCreated = new ItemCreatedCountConfig( - "card-item-created", - "1st card item added", - 1, - CipherType.Card, - ); - static readonly CardItemCreated3 = new ItemCreatedCountConfig( - "card-item-created-3", - "3rd card items added", - 3, - CipherType.Card, - ); - static readonly CardItemCreated5 = new ItemCreatedCountConfig( - "card-item-created-5", - "5th card item added", - 5, - CipherType.Card, - ); + // Note items + new ItemCreatedCountConfig( + "note-item-created", + "1st card item added", + 1, + CipherType.SecureNote, + ), + new ItemCreatedCountConfig( + "note-item-created-ten", + "10 card items added", + 10, + CipherType.SecureNote, + ), + new ItemCreatedCountConfig( + "note-item-created-fifty", + "50 card items added", + 50, + CipherType.SecureNote, + ), + new ItemCreatedCountConfig( + "note-item-created-one-hundred", + "100 card items added", + 100, + CipherType.SecureNote, + ), - // Note items - static readonly NoteItemCreated = new ItemCreatedCountConfig( - "note-item-created", - "1st card item added", - 1, - CipherType.SecureNote, - ); - static readonly NoteItemCreated10 = new ItemCreatedCountConfig( - "note-item-created-ten", - "10 card items added", - 10, - CipherType.SecureNote, - ); - static readonly NoteItemCreated50 = new ItemCreatedCountConfig( - "note-item-created-fifty", - "50 card items added", - 50, - CipherType.SecureNote, - ); - static readonly NoteItemCreated100 = new ItemCreatedCountConfig( - "note-item-created-one-hundred", - "100 card items added", - 100, - CipherType.SecureNote, - ); - - // SSH Key - Achievements indicate only one so just set threshold at 1 - static readonly SSHKeyItemCreated = new ItemCreatedCountConfig( - "ssh-key-item-created", - "1st SSH Key added", - 1, - ); + // SSH Key - Achievements indicate only one so just set threshold at 1 + new ItemCreatedCountConfig("ssh-key-item-created", "1st SSH Key added", 1), + ]; base: Achievement; get achievement() { diff --git a/libs/common/src/tools/achievements/validators/config/send-created-count-config.ts b/libs/common/src/tools/achievements/validators/config/send-created-count-config.ts index 3978cb60ffc..6df5f9329f5 100644 --- a/libs/common/src/tools/achievements/validators/config/send-created-count-config.ts +++ b/libs/common/src/tools/achievements/validators/config/send-created-count-config.ts @@ -9,26 +9,12 @@ import { Achievement, AchievementId, MetricId } from "../../types"; */ export class SendItemCreatedCountConfig implements Achievement { // Define send count achievements here - static readonly SendItemCreated = new SendItemCreatedCountConfig( - "send-item-created", - "1st send item created", - 1, - ); - static readonly SendItemCreated10 = new SendItemCreatedCountConfig( - "send-item-created-10", - "10 send items created", - 10, - ); - static readonly SendItemCreated50 = new SendItemCreatedCountConfig( - "send-item-created-50", - "50 send items created", - 50, - ); - static readonly SendItemCreated100 = new SendItemCreatedCountConfig( - "send-item-created-100", - "100 send items created", - 100, - ); + static readonly AllConfigs: SendItemCreatedCountConfig[] = [ + new SendItemCreatedCountConfig("send-item-created", "1st send item created", 1), + new SendItemCreatedCountConfig("send-item-created-10", "10 send items created", 10), + new SendItemCreatedCountConfig("send-item-created-50", "50 send items created", 50), + new SendItemCreatedCountConfig("send-item-created-100", "100 send items created", 100), + ]; base: Achievement; get achievement() { diff --git a/libs/common/src/tools/achievements/validators/send-item-created-count-validator.ts b/libs/common/src/tools/achievements/validators/send-item-created-count-validator.ts index 16edb2583cb..c10091fce0d 100644 --- a/libs/common/src/tools/achievements/validators/send-item-created-count-validator.ts +++ b/libs/common/src/tools/achievements/validators/send-item-created-count-validator.ts @@ -22,6 +22,10 @@ export class SendItemCreatedCountValidator implements AchievementValidator { this.sendItemCreatedProgress = config.active.metric; } + static createValidators(configs: SendItemCreatedCountConfig[]): SendItemCreatedCountValidator[] { + return configs.map((config) => new SendItemCreatedCountValidator(config)); + } + base: AchievementValidator; get achievement() { return this.config.achievement; diff --git a/libs/common/src/tools/achievements/validators/vault-item-created-count-validator.ts b/libs/common/src/tools/achievements/validators/vault-item-created-count-validator.ts index 7eddf29e29c..15feea65de9 100644 --- a/libs/common/src/tools/achievements/validators/vault-item-created-count-validator.ts +++ b/libs/common/src/tools/achievements/validators/vault-item-created-count-validator.ts @@ -30,6 +30,10 @@ export class VaultItemCreatedCountValidator implements AchievementValidator { this.itemCreatedProgress = config.active.metric; } + static createValidators(configs: ItemCreatedCountConfig[]): AchievementValidator[] { + return configs.map((config) => new VaultItemCreatedCountValidator(config)); + } + base: AchievementValidator; get achievement() { return this.config.achievement;