From a87acfbd14c697e484db3289bf3d4fd1ab7576cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Claus-Peter=20H=C3=BCbner?= Date: Thu, 23 Mar 2023 22:05:03 +0100 Subject: [PATCH 01/17] adapt document to new rules and conventions --- .../BusinessRequirements/UC_Set_UserAlias.md | 67 ++++++++++++------- 1 file changed, 44 insertions(+), 23 deletions(-) diff --git a/docu/Concepts/BusinessRequirements/UC_Set_UserAlias.md b/docu/Concepts/BusinessRequirements/UC_Set_UserAlias.md index a5cb07e0e..6340b04a4 100644 --- a/docu/Concepts/BusinessRequirements/UC_Set_UserAlias.md +++ b/docu/Concepts/BusinessRequirements/UC_Set_UserAlias.md @@ -26,18 +26,51 @@ Dies ist ein rein technischer Key und wird nur **innerhalb** der Anwendung zur I Die GradidoID ist zwar auch ein rein technischer Key, doch wird dieser als eine UUID der Version 4 erstellt. Dies basiert auf einer (pseudo)zufällig generierten Zahl aus 16 Bytes mit einer theoretischen Konfliktfreiheit von ![2^{{122}}\approx 5{,}3169\cdot 10^{{36}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/1924927d783e2d3969734633e134f643b6f9a8cd) in hexadezimaler Notation nach einem Pattern von fünf Gruppen durch Bindestrich getrennt - z.B. `550e8400-e29b-41d4-a716-446655440000` -Somit kann die GradidoID auch System übergreifend zwischen Communities ausgetauscht werden und bietet dennoch eine weitestgehende eindeutige theoretisch konfliktfreie Identifikation des Users. System intern ist die Eindeutigkeit bei der Erstellung eines neuen Users auf jedenfall sichergestellt. Sollte ein User den Wechsel von einer Community in eine andere gradido-Community wünschen, so soll falls möglich die GradidoID für den User erhalten bleiben und übernommen werden können. Dies muss beim Umzug in der Ziel-Community geprüft werden. Falls diese GradidoID aus der Quell-Community wider erwarten existieren sollte, dann muss doch einen neue GradidoID für den User erzeugt werden. +Somit kann die GradidoID auch System übergreifend zwischen Communities ausgetauscht werden und bietet dennoch eine weitestgehende eindeutige theoretisch konfliktfreie Identifikation des Users. System intern ist die Eindeutigkeit bei der Erstellung eines neuen Users auf jedenfall sichergestellt. Sollte ein User den Wechsel von einer Community in eine andere gradido-Community wünschen, so soll falls möglich die GradidoID für den User erhalten bleiben und übernommen werden können. Dies muss beim Umzug in der Ziel-Community geprüft werden. Falls diese GradidoID aus der Quell-Community wider erwarten existieren sollte, dann muss doch einen neue GradidoID für den User in der Ziel-Community erzeugt werden. #### Alias Der Alias eines Users ist als rein fachlicher Key ausgelegt, der frei vom User definiert werden kann. Bei der Definition dieses frei definierbaren und menschenlesbaren Schlüsselwertes stellt die Gradido-Anwendung sicher, dass der vom User eingegebene Wert nicht schon von einem anderen User dieser Community verwendet wird. Für die Anlage eines Alias gelten folgende Konventionen: -- mindestens 5 Zeichen - * alphanumerisch - * keine Umlaute - * nach folgender Regel erlaubt (RegEx: [a-zA-Z0-9]-|_[a-zA-Z0-9]) -- Blacklist für Schlüsselworte, die frei definiert werden können -- vordefinierte/reservierte System relevante Namen dürfen maximal aus 4 Zeichen bestehen +* alpha-nummerisch +* 2 <= Länge des alias <=20 +* beginnt mit einem Buchstaben +* keine Umlaute +* keine Sonderzeichen ausser dem Bindestrich "-" und dem Unterstrich "_" +* nicht mehr als 2 Wiederholungen des gleichen Zeichens direkt hintereinander +* kein Unterscheidung von Groß-Kleinschreibung, es findet eine Konvertierung auf Kleinschreibung statt + +Blackliste für nicht vom User verwendbare alias-Definitionen: + +Notation: das %-Zeichen dient als Platzhalter für 0 oder beliebig viele der erlaubten Zeichen + +* %gradido% (= die Sequenz gradido darf nicht enthalten sein) +* %community% (= die Sequenz community darf nicht enthalten sein) +* %communities% (= die Sequenz communities darf nicht enthalten sein) +* %admin% (= die Sequenz admin darf nicht enthalten sein) +* %gast% (= die Sequenz gast darf nicht enthalten sein) +* %guest% (= die Sequenz guest darf nicht enthalten sein) +* support% (= darf nicht mit der Sequenz support beginnen) +* user% (= darf nicht mit der Sequenz user beginnen) +* usr% (= darf nicht mit der Sequenz usr beginnen) +* home% (= darf nicht mit der Sequenz home beginnen) +* chief% (= darf nicht mit der Sequenz chief beginnen) +* chef% (= darf nicht mit der Sequenz chef beginnen) +* master% (= darf nicht mit der Sequenz master beginnen) +* email% (= darf nicht mit der Sequenz email beginnen) +* mail% (= darf nicht mit der Sequenz mail beginnen) +* root% (= darf nicht mit der Sequenz root beginnen) +* tmp% (= darf nicht mit der Sequenz tmp beginnen) +* temp% (= darf nicht mit der Sequenz temp beginnen) +* gdd% (= darf nicht mit der Sequenz gdd beginnen) +* gdt% (= darf nicht mit der Sequenz gdt beginnen) +* gdb% (= darf nicht mit der Sequenz gdb beginnen) +* age (= darf nicht age lauten) +* gmw (= darf nicht gmw lauten) +* auf (= darf nicht auf lauten) +* ... + +Um für die Zukunft für eine Community im Rahmen der Dreifachen-Geldschöpfung und deren Verwaltung bestimmte Alias-Werte nicht an allgemeine User zu verlieren, werden in der Blackliste jetzt schon solche Belegungen reserviert. Damit können diese ggf. später wieder für system relevante User der Community wieder freigegeben werden. #### Email @@ -49,7 +82,7 @@ Die Email wird weiterhin als Kommunikationskanal ausserhalb der Gradido-Anwendun Die Erfassung des Alias erfolgt als zusätzliche Eingabe direkt bei der Registrierung eines neuen Users oder als weiterer Schritt direkt nach dem Login. -Dieser UseCase ist in die **Ausbaustufe-1** und **Ausbaustufe-x** unterteilt. +Dieser UseCase ist in die **Ausbaustufe-1** und **Ausbaustufe-x** unterteilt. Alle beschriebenen Anforderungen der **Ausbaustufe-1** können mit Produktivsetzung des Issues #1798 - [GradidoID 1: adapt and migrate database schema](https://github.com/gradido/gradido/issues/1798) und dem [PR #2058 - GradidoID 1: adapt and migrate database schema](https://github.com/gradido/gradido/pull/2058) umgesetzt werden. @@ -63,7 +96,7 @@ In der Eingabemaske der Registrierung wird nun zusätzlich das Feld *Alias* ange ![img](./image/RegisterWithAlias.png) -Mit dem (optionalen ?) Button "Eindeutigkeit prüfen" wird dem User die Möglichkeit gegeben vorab die Eindeutigkeit seiner *Alias*-Eingabe zu verifizieren ohne den Dialog über den "Registrieren"-Button zu verlassen. Denn es muss sichergestellt sein, dass noch kein existierender User der Community genau diesen *Alias* evtl. schon verwendet. +Mit dem (optionalen ?) Button "Eindeutigkeit prüfen" wird dem User die Möglichkeit gegeben vorab die Eindeutigkeit seiner *Alias*-Eingabe zu verifizieren ohne den Dialog über den "Registrieren"-Button zu verlassen. Denn es muss sichergestellt sein, dass noch kein existierender User der Community genau diesen *Alias* evtl. schon verwendet. Wird diese Prüfung vom User nicht ausgeführt bevor er den Dialog mit dem "Registrieren"-Button abschließt, so erfolgt die *Alias*-Eindeutigkeitsprüfung als erster Schritt bevor die anderen Eingaben als neuer User geprüft und angelegt werden. @@ -93,20 +126,8 @@ Der Sprung nach der Login-Seite nach erfolgreichem Login auf die Profil-Seite ö Im Eingabe-Modus der Alias-Gruppe hat das Eingabefeld den Fokus und darin wird: * wenn noch kein Alias für den User in der Datenbank vorhanden ist, vom System ein Vorschlag unterbreitet. Der Vorschlag basiert auf dem Vornamen des Users und wird durch folgende Logik ermittelt: - * es wird mit dem Vorname des Users eine Datenbankabfrage durchgeführt, die zählt, wieviele User-Aliase es schon mit diesem Vornamen gibt und falls notwendig direkt mit einer nachfolgenden Nummer als Postfix versehen sind. - * Aufgrund der Konvention, dass ein Alias mindestens 5 Zeichen lang sein muss, sind ggf. führende Nullen mitzuberücksichten. - * **Beispiel-1**: *Max* als Vorname - * in der Datenbank gibt es schon mehrer User mit den Aliasen: *Maximilian*, *Max01*, *Max_M*, *Max-M*, *MaxMu* und *Max02*. - * Dann schlägt das System den Alias *Max03* vor, da *Max* nur 3 Zeichen lang ist und es schon zwei Aliase *Max* gefolgt mit einer Nummer gibt (*Max01* und *Max02*) - * Die Aliase *Maximilian*, *Max_M*, *Max-M* und *MaxMu* werden nicht mitgezählt, das diese nach *Max* keine direkt folgende Ziffern haben - * **Beispiel-2**: *August* als Vorname - * in der Datenbank gibt es schon mehrer User mit den Aliasen: *Augusta*, *Augustus*, *Augustinus* - * Dann schlägt das System den Alias *August* vor, da *August* schon 6 Zeichen lang ist und es noch keinen anderen User mit Alias *August* gibt - * die Aliase *Augusta*, *Augustus* und *Augustinus* werden nicht mit gezählt, da diese länger als 5 Zeichen sind und sich von *August* unterscheiden - * **Beispiel-3**: *Nick* als Vorname - * in der Datenbank gibt es schon mehrer User mit den Aliasen: *Nicko*, *Nickodemus* - * Dann schlägt das System den Alias *Nick1* vor, da *Nick* kürzer als 5 Zeichen ist und es noch keinen anderen User mit dem Alias *Nick1* gibt - * die Aliase *Nicko* und *Nickodemus* werden nicht mit gezählt, da diese länger als 5 Zeichen sind und sich von *Nick* unterscheiden + * es wird mit dem Vorname des Users eine Datenbankabfrage durchgeführt, die zählt, wieviele User-Aliase es schon mit diesem Vornamen gibt und falls notwendig direkt mit einer nachfolgenden Nummer als Postfix versehen. + * Aufgrund der Konvention für eine Alias-Definition könnte ein Vorname ggf. gegen die Alias-Regeln verstossen oder aber auch evtl. zu kurz oder lang sein. Auch ein mögliches Blockieren durch die Blacklist könnte den Vornamen des Users als alias verhindern. Dann muss der User selbst manuell seinen alias vollständig erfassen ohne, dass das System einen Vorschlag unterbreiten könnte. * wenn schon ein Alias für den User in der Datenbank vorhanden ist, dann wird dieser unverändert aus der Datenbank und ohne Systemvorschlag einfach angezeigt. Der User kann nun den im Eingabefeld angezeigten Alias verändern, wobei die Alias-Konventionen, wie oben im ersten Kapitel beschrieben einzuhalten und zu validieren sind. From 28cbf13062a936625e4e5b57ed050df00eb46ea3 Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Wed, 29 Mar 2023 16:23:55 +0200 Subject: [PATCH 02/17] solution to enable import/no-cycle --- backend/.eslintrc.js | 2 +- .../event/EVENT_ADMIN_CONTRIBUTION_CONFIRM.ts | 3 +- .../event/EVENT_ADMIN_CONTRIBUTION_CREATE.ts | 3 +- .../event/EVENT_ADMIN_CONTRIBUTION_DELETE.ts | 3 +- .../event/EVENT_ADMIN_CONTRIBUTION_DENY.ts | 3 +- .../EVENT_ADMIN_CONTRIBUTION_LINK_CREATE.ts | 3 +- .../EVENT_ADMIN_CONTRIBUTION_LINK_DELETE.ts | 3 +- .../EVENT_ADMIN_CONTRIBUTION_LINK_UPDATE.ts | 3 +- ...EVENT_ADMIN_CONTRIBUTION_MESSAGE_CREATE.ts | 3 +- .../event/EVENT_ADMIN_CONTRIBUTION_UPDATE.ts | 3 +- backend/src/event/EVENT_ADMIN_USER_DELETE.ts | 3 +- .../src/event/EVENT_ADMIN_USER_ROLE_SET.ts | 3 +- .../src/event/EVENT_ADMIN_USER_UNDELETE.ts | 3 +- .../src/event/EVENT_CONTRIBUTION_CREATE.ts | 3 +- .../src/event/EVENT_CONTRIBUTION_DELETE.ts | 3 +- .../event/EVENT_CONTRIBUTION_LINK_REDEEM.ts | 3 +- .../EVENT_CONTRIBUTION_MESSAGE_CREATE.ts | 3 +- .../src/event/EVENT_CONTRIBUTION_UPDATE.ts | 3 +- .../EVENT_EMAIL_ACCOUNT_MULTIREGISTRATION.ts | 3 +- .../event/EVENT_EMAIL_ADMIN_CONFIRMATION.ts | 3 +- backend/src/event/EVENT_EMAIL_CONFIRMATION.ts | 3 +- .../src/event/EVENT_EMAIL_FORGOT_PASSWORD.ts | 3 +- .../event/EVENT_TRANSACTION_LINK_CREATE.ts | 3 +- .../event/EVENT_TRANSACTION_LINK_DELETE.ts | 3 +- .../event/EVENT_TRANSACTION_LINK_REDEEM.ts | 3 +- .../src/event/EVENT_TRANSACTION_RECEIVE.ts | 3 +- backend/src/event/EVENT_TRANSACTION_SEND.ts | 3 +- .../src/event/EVENT_USER_ACTIVATE_ACCOUNT.ts | 3 +- backend/src/event/EVENT_USER_INFO_UPDATE.ts | 3 +- backend/src/event/EVENT_USER_LOGIN.ts | 3 +- backend/src/event/EVENT_USER_LOGOUT.ts | 3 +- backend/src/event/EVENT_USER_REGISTER.ts | 3 +- backend/src/event/Event.ts | 34 ------------------- backend/src/event/Events.ts | 33 ++++++++++++++++++ .../resolver/ContributionLinkResolver.test.ts | 2 +- .../resolver/ContributionLinkResolver.ts | 2 +- .../ContributionMessageResolver.test.ts | 2 +- .../resolver/ContributionMessageResolver.ts | 2 +- .../resolver/ContributionResolver.test.ts | 2 +- .../graphql/resolver/ContributionResolver.ts | 2 +- .../resolver/TransactionLinkResolver.test.ts | 2 +- .../resolver/TransactionLinkResolver.ts | 2 +- .../resolver/TransactionResolver.test.ts | 2 +- .../graphql/resolver/TransactionResolver.ts | 2 +- .../src/graphql/resolver/UserResolver.test.ts | 2 +- backend/src/graphql/resolver/UserResolver.ts | 2 +- 46 files changed, 108 insertions(+), 78 deletions(-) create mode 100644 backend/src/event/Events.ts diff --git a/backend/.eslintrc.js b/backend/.eslintrc.js index 79276ef9d..2654104dc 100644 --- a/backend/.eslintrc.js +++ b/backend/.eslintrc.js @@ -55,7 +55,7 @@ module.exports = { 'import/named': 'error', 'import/namespace': 'error', 'import/no-absolute-path': 'error', - 'import/no-cycle': 'off', + 'import/no-cycle': 'error', 'import/no-dynamic-require': 'error', 'import/no-internal-modules': 'off', 'import/no-relative-packages': 'error', diff --git a/backend/src/event/EVENT_ADMIN_CONTRIBUTION_CONFIRM.ts b/backend/src/event/EVENT_ADMIN_CONTRIBUTION_CONFIRM.ts index 33c9ae36e..cb1f8b32b 100644 --- a/backend/src/event/EVENT_ADMIN_CONTRIBUTION_CONFIRM.ts +++ b/backend/src/event/EVENT_ADMIN_CONTRIBUTION_CONFIRM.ts @@ -2,7 +2,8 @@ import { Decimal } from 'decimal.js-light' import { User as DbUser } from '@entity/User' import { Contribution as DbContribution } from '@entity/Contribution' import { Event as DbEvent } from '@entity/Event' -import { Event, EventType } from './Event' +import { Event } from './Event' +import { EventType } from './EventType' export const EVENT_ADMIN_CONTRIBUTION_CONFIRM = async ( user: DbUser, diff --git a/backend/src/event/EVENT_ADMIN_CONTRIBUTION_CREATE.ts b/backend/src/event/EVENT_ADMIN_CONTRIBUTION_CREATE.ts index bf85345cf..64797fc26 100644 --- a/backend/src/event/EVENT_ADMIN_CONTRIBUTION_CREATE.ts +++ b/backend/src/event/EVENT_ADMIN_CONTRIBUTION_CREATE.ts @@ -2,7 +2,8 @@ import { Decimal } from 'decimal.js-light' import { User as DbUser } from '@entity/User' import { Contribution as DbContribution } from '@entity/Contribution' import { Event as DbEvent } from '@entity/Event' -import { Event, EventType } from './Event' +import { Event } from './Event' +import { EventType } from './EventType' export const EVENT_ADMIN_CONTRIBUTION_CREATE = async ( user: DbUser, diff --git a/backend/src/event/EVENT_ADMIN_CONTRIBUTION_DELETE.ts b/backend/src/event/EVENT_ADMIN_CONTRIBUTION_DELETE.ts index dd37c76b5..a2770b34d 100644 --- a/backend/src/event/EVENT_ADMIN_CONTRIBUTION_DELETE.ts +++ b/backend/src/event/EVENT_ADMIN_CONTRIBUTION_DELETE.ts @@ -2,7 +2,8 @@ import { Decimal } from 'decimal.js-light' import { User as DbUser } from '@entity/User' import { Contribution as DbContribution } from '@entity/Contribution' import { Event as DbEvent } from '@entity/Event' -import { Event, EventType } from './Event' +import { Event } from './Event' +import { EventType } from './EventType' export const EVENT_ADMIN_CONTRIBUTION_DELETE = async ( user: DbUser, diff --git a/backend/src/event/EVENT_ADMIN_CONTRIBUTION_DENY.ts b/backend/src/event/EVENT_ADMIN_CONTRIBUTION_DENY.ts index 8d34be87f..cb9e32fbf 100644 --- a/backend/src/event/EVENT_ADMIN_CONTRIBUTION_DENY.ts +++ b/backend/src/event/EVENT_ADMIN_CONTRIBUTION_DENY.ts @@ -2,7 +2,8 @@ import { Decimal } from 'decimal.js-light' import { User as DbUser } from '@entity/User' import { Contribution as DbContribution } from '@entity/Contribution' import { Event as DbEvent } from '@entity/Event' -import { Event, EventType } from './Event' +import { Event } from './Event' +import { EventType } from './EventType' export const EVENT_ADMIN_CONTRIBUTION_DENY = async ( user: DbUser, diff --git a/backend/src/event/EVENT_ADMIN_CONTRIBUTION_LINK_CREATE.ts b/backend/src/event/EVENT_ADMIN_CONTRIBUTION_LINK_CREATE.ts index b7ee39c36..93bfdbf4b 100644 --- a/backend/src/event/EVENT_ADMIN_CONTRIBUTION_LINK_CREATE.ts +++ b/backend/src/event/EVENT_ADMIN_CONTRIBUTION_LINK_CREATE.ts @@ -2,7 +2,8 @@ import { Decimal } from 'decimal.js-light' import { User as DbUser } from '@entity/User' import { ContributionLink as DbContributionLink } from '@entity/ContributionLink' import { Event as DbEvent } from '@entity/Event' -import { Event, EventType } from './Event' +import { Event } from './Event' +import { EventType } from './EventType' export const EVENT_ADMIN_CONTRIBUTION_LINK_CREATE = async ( moderator: DbUser, diff --git a/backend/src/event/EVENT_ADMIN_CONTRIBUTION_LINK_DELETE.ts b/backend/src/event/EVENT_ADMIN_CONTRIBUTION_LINK_DELETE.ts index b5816e45d..2794f5fa3 100644 --- a/backend/src/event/EVENT_ADMIN_CONTRIBUTION_LINK_DELETE.ts +++ b/backend/src/event/EVENT_ADMIN_CONTRIBUTION_LINK_DELETE.ts @@ -1,7 +1,8 @@ import { User as DbUser } from '@entity/User' import { ContributionLink as DbContributionLink } from '@entity/ContributionLink' import { Event as DbEvent } from '@entity/Event' -import { Event, EventType } from './Event' +import { Event } from './Event' +import { EventType } from './EventType' export const EVENT_ADMIN_CONTRIBUTION_LINK_DELETE = async ( moderator: DbUser, diff --git a/backend/src/event/EVENT_ADMIN_CONTRIBUTION_LINK_UPDATE.ts b/backend/src/event/EVENT_ADMIN_CONTRIBUTION_LINK_UPDATE.ts index 1cd998e26..810cecf29 100644 --- a/backend/src/event/EVENT_ADMIN_CONTRIBUTION_LINK_UPDATE.ts +++ b/backend/src/event/EVENT_ADMIN_CONTRIBUTION_LINK_UPDATE.ts @@ -2,7 +2,8 @@ import { Decimal } from 'decimal.js-light' import { User as DbUser } from '@entity/User' import { ContributionLink as DbContributionLink } from '@entity/ContributionLink' import { Event as DbEvent } from '@entity/Event' -import { Event, EventType } from './Event' +import { Event } from './Event' +import { EventType } from './EventType' export const EVENT_ADMIN_CONTRIBUTION_LINK_UPDATE = async ( moderator: DbUser, diff --git a/backend/src/event/EVENT_ADMIN_CONTRIBUTION_MESSAGE_CREATE.ts b/backend/src/event/EVENT_ADMIN_CONTRIBUTION_MESSAGE_CREATE.ts index f07d38e98..ab96b78f6 100644 --- a/backend/src/event/EVENT_ADMIN_CONTRIBUTION_MESSAGE_CREATE.ts +++ b/backend/src/event/EVENT_ADMIN_CONTRIBUTION_MESSAGE_CREATE.ts @@ -2,7 +2,8 @@ import { User as DbUser } from '@entity/User' import { Contribution as DbContribution } from '@entity/Contribution' import { ContributionMessage as DbContributionMessage } from '@entity/ContributionMessage' import { Event as DbEvent } from '@entity/Event' -import { Event, EventType } from './Event' +import { Event } from './Event' +import { EventType } from './EventType' export const EVENT_ADMIN_CONTRIBUTION_MESSAGE_CREATE = async ( user: DbUser, diff --git a/backend/src/event/EVENT_ADMIN_CONTRIBUTION_UPDATE.ts b/backend/src/event/EVENT_ADMIN_CONTRIBUTION_UPDATE.ts index 7d1bc175e..6bea692fd 100644 --- a/backend/src/event/EVENT_ADMIN_CONTRIBUTION_UPDATE.ts +++ b/backend/src/event/EVENT_ADMIN_CONTRIBUTION_UPDATE.ts @@ -2,7 +2,8 @@ import { Decimal } from 'decimal.js-light' import { User as DbUser } from '@entity/User' import { Contribution as DbContribution } from '@entity/Contribution' import { Event as DbEvent } from '@entity/Event' -import { Event, EventType } from './Event' +import { Event } from './Event' +import { EventType } from './EventType' export const EVENT_ADMIN_CONTRIBUTION_UPDATE = async ( user: DbUser, diff --git a/backend/src/event/EVENT_ADMIN_USER_DELETE.ts b/backend/src/event/EVENT_ADMIN_USER_DELETE.ts index bfd5be740..1eb7399aa 100644 --- a/backend/src/event/EVENT_ADMIN_USER_DELETE.ts +++ b/backend/src/event/EVENT_ADMIN_USER_DELETE.ts @@ -1,6 +1,7 @@ import { User as DbUser } from '@entity/User' import { Event as DbEvent } from '@entity/Event' -import { Event, EventType } from './Event' +import { Event } from './Event' +import { EventType } from './EventType' export const EVENT_ADMIN_USER_DELETE = async (user: DbUser, moderator: DbUser): Promise => Event(EventType.ADMIN_USER_DELETE, user, moderator).save() diff --git a/backend/src/event/EVENT_ADMIN_USER_ROLE_SET.ts b/backend/src/event/EVENT_ADMIN_USER_ROLE_SET.ts index 3be825ad4..37c840475 100644 --- a/backend/src/event/EVENT_ADMIN_USER_ROLE_SET.ts +++ b/backend/src/event/EVENT_ADMIN_USER_ROLE_SET.ts @@ -1,6 +1,7 @@ import { User as DbUser } from '@entity/User' import { Event as DbEvent } from '@entity/Event' -import { Event, EventType } from './Event' +import { Event } from './Event' +import { EventType } from './EventType' export const EVENT_ADMIN_USER_ROLE_SET = async ( user: DbUser, diff --git a/backend/src/event/EVENT_ADMIN_USER_UNDELETE.ts b/backend/src/event/EVENT_ADMIN_USER_UNDELETE.ts index eb861dbf1..121662ea8 100644 --- a/backend/src/event/EVENT_ADMIN_USER_UNDELETE.ts +++ b/backend/src/event/EVENT_ADMIN_USER_UNDELETE.ts @@ -1,6 +1,7 @@ import { User as DbUser } from '@entity/User' import { Event as DbEvent } from '@entity/Event' -import { Event, EventType } from './Event' +import { Event } from './Event' +import { EventType } from './EventType' export const EVENT_ADMIN_USER_UNDELETE = async ( user: DbUser, diff --git a/backend/src/event/EVENT_CONTRIBUTION_CREATE.ts b/backend/src/event/EVENT_CONTRIBUTION_CREATE.ts index f1469c725..6842bc4eb 100644 --- a/backend/src/event/EVENT_CONTRIBUTION_CREATE.ts +++ b/backend/src/event/EVENT_CONTRIBUTION_CREATE.ts @@ -2,7 +2,8 @@ import { Decimal } from 'decimal.js-light' import { User as DbUser } from '@entity/User' import { Contribution as DbContribution } from '@entity/Contribution' import { Event as DbEvent } from '@entity/Event' -import { Event, EventType } from './Event' +import { Event } from './Event' +import { EventType } from './EventType' export const EVENT_CONTRIBUTION_CREATE = async ( user: DbUser, diff --git a/backend/src/event/EVENT_CONTRIBUTION_DELETE.ts b/backend/src/event/EVENT_CONTRIBUTION_DELETE.ts index 8c62e3ae6..30130662f 100644 --- a/backend/src/event/EVENT_CONTRIBUTION_DELETE.ts +++ b/backend/src/event/EVENT_CONTRIBUTION_DELETE.ts @@ -2,7 +2,8 @@ import { Decimal } from 'decimal.js-light' import { User as DbUser } from '@entity/User' import { Contribution as DbContribution } from '@entity/Contribution' import { Event as DbEvent } from '@entity/Event' -import { Event, EventType } from './Event' +import { Event } from './Event' +import { EventType } from './EventType' export const EVENT_CONTRIBUTION_DELETE = async ( user: DbUser, diff --git a/backend/src/event/EVENT_CONTRIBUTION_LINK_REDEEM.ts b/backend/src/event/EVENT_CONTRIBUTION_LINK_REDEEM.ts index 9f44de95d..5138548a6 100644 --- a/backend/src/event/EVENT_CONTRIBUTION_LINK_REDEEM.ts +++ b/backend/src/event/EVENT_CONTRIBUTION_LINK_REDEEM.ts @@ -4,7 +4,8 @@ import { Transaction as DbTransaction } from '@entity/Transaction' import { Contribution as DbContribution } from '@entity/Contribution' import { ContributionLink as DbContributionLink } from '@entity/ContributionLink' import { Event as DbEvent } from '@entity/Event' -import { Event, EventType } from './Event' +import { Event } from './Event' +import { EventType } from './EventType' export const EVENT_CONTRIBUTION_LINK_REDEEM = async ( user: DbUser, diff --git a/backend/src/event/EVENT_CONTRIBUTION_MESSAGE_CREATE.ts b/backend/src/event/EVENT_CONTRIBUTION_MESSAGE_CREATE.ts index b06685a6d..1200834de 100644 --- a/backend/src/event/EVENT_CONTRIBUTION_MESSAGE_CREATE.ts +++ b/backend/src/event/EVENT_CONTRIBUTION_MESSAGE_CREATE.ts @@ -2,7 +2,8 @@ import { User as DbUser } from '@entity/User' import { Contribution as DbContribution } from '@entity/Contribution' import { ContributionMessage as DbContributionMessage } from '@entity/ContributionMessage' import { Event as DbEvent } from '@entity/Event' -import { Event, EventType } from './Event' +import { Event } from './Event' +import { EventType } from './EventType' export const EVENT_CONTRIBUTION_MESSAGE_CREATE = async ( user: DbUser, diff --git a/backend/src/event/EVENT_CONTRIBUTION_UPDATE.ts b/backend/src/event/EVENT_CONTRIBUTION_UPDATE.ts index c2e6951cc..38df20a4c 100644 --- a/backend/src/event/EVENT_CONTRIBUTION_UPDATE.ts +++ b/backend/src/event/EVENT_CONTRIBUTION_UPDATE.ts @@ -2,7 +2,8 @@ import { Decimal } from 'decimal.js-light' import { User as DbUser } from '@entity/User' import { Contribution as DbContribution } from '@entity/Contribution' import { Event as DbEvent } from '@entity/Event' -import { Event, EventType } from './Event' +import { Event } from './Event' +import { EventType } from './EventType' export const EVENT_CONTRIBUTION_UPDATE = async ( user: DbUser, diff --git a/backend/src/event/EVENT_EMAIL_ACCOUNT_MULTIREGISTRATION.ts b/backend/src/event/EVENT_EMAIL_ACCOUNT_MULTIREGISTRATION.ts index c16bbfac3..ad9d27596 100644 --- a/backend/src/event/EVENT_EMAIL_ACCOUNT_MULTIREGISTRATION.ts +++ b/backend/src/event/EVENT_EMAIL_ACCOUNT_MULTIREGISTRATION.ts @@ -1,6 +1,7 @@ import { User as DbUser } from '@entity/User' import { Event as DbEvent } from '@entity/Event' -import { Event, EventType } from './Event' +import { Event } from './Event' +import { EventType } from './EventType' export const EVENT_EMAIL_ACCOUNT_MULTIREGISTRATION = async (user: DbUser): Promise => Event(EventType.EMAIL_ACCOUNT_MULTIREGISTRATION, user, { id: 0 } as DbUser).save() diff --git a/backend/src/event/EVENT_EMAIL_ADMIN_CONFIRMATION.ts b/backend/src/event/EVENT_EMAIL_ADMIN_CONFIRMATION.ts index ae10f9fba..2ba31af9d 100644 --- a/backend/src/event/EVENT_EMAIL_ADMIN_CONFIRMATION.ts +++ b/backend/src/event/EVENT_EMAIL_ADMIN_CONFIRMATION.ts @@ -1,6 +1,7 @@ import { User as DbUser } from '@entity/User' import { Event as DbEvent } from '@entity/Event' -import { Event, EventType } from './Event' +import { Event } from './Event' +import { EventType } from './EventType' export const EVENT_EMAIL_ADMIN_CONFIRMATION = async ( user: DbUser, diff --git a/backend/src/event/EVENT_EMAIL_CONFIRMATION.ts b/backend/src/event/EVENT_EMAIL_CONFIRMATION.ts index 9d64207e0..5edef7f20 100644 --- a/backend/src/event/EVENT_EMAIL_CONFIRMATION.ts +++ b/backend/src/event/EVENT_EMAIL_CONFIRMATION.ts @@ -1,6 +1,7 @@ import { User as DbUser } from '@entity/User' import { Event as DbEvent } from '@entity/Event' -import { Event, EventType } from './Event' +import { Event } from './Event' +import { EventType } from './EventType' export const EVENT_EMAIL_CONFIRMATION = async (user: DbUser): Promise => Event(EventType.EMAIL_CONFIRMATION, user, user).save() diff --git a/backend/src/event/EVENT_EMAIL_FORGOT_PASSWORD.ts b/backend/src/event/EVENT_EMAIL_FORGOT_PASSWORD.ts index f7e328369..72d3b2b2c 100644 --- a/backend/src/event/EVENT_EMAIL_FORGOT_PASSWORD.ts +++ b/backend/src/event/EVENT_EMAIL_FORGOT_PASSWORD.ts @@ -1,6 +1,7 @@ import { User as DbUser } from '@entity/User' import { Event as DbEvent } from '@entity/Event' -import { Event, EventType } from './Event' +import { Event } from './Event' +import { EventType } from './EventType' export const EVENT_EMAIL_FORGOT_PASSWORD = async (user: DbUser): Promise => Event(EventType.EMAIL_FORGOT_PASSWORD, user, { id: 0 } as DbUser).save() diff --git a/backend/src/event/EVENT_TRANSACTION_LINK_CREATE.ts b/backend/src/event/EVENT_TRANSACTION_LINK_CREATE.ts index e766fe38e..74e4c1b42 100644 --- a/backend/src/event/EVENT_TRANSACTION_LINK_CREATE.ts +++ b/backend/src/event/EVENT_TRANSACTION_LINK_CREATE.ts @@ -2,7 +2,8 @@ import { Decimal } from 'decimal.js-light' import { User as DbUser } from '@entity/User' import { TransactionLink as DbTransactionLink } from '@entity/TransactionLink' import { Event as DbEvent } from '@entity/Event' -import { Event, EventType } from './Event' +import { Event } from './Event' +import { EventType } from './EventType' export const EVENT_TRANSACTION_LINK_CREATE = async ( user: DbUser, diff --git a/backend/src/event/EVENT_TRANSACTION_LINK_DELETE.ts b/backend/src/event/EVENT_TRANSACTION_LINK_DELETE.ts index d15c786a8..70e06bbd4 100644 --- a/backend/src/event/EVENT_TRANSACTION_LINK_DELETE.ts +++ b/backend/src/event/EVENT_TRANSACTION_LINK_DELETE.ts @@ -1,7 +1,8 @@ import { User as DbUser } from '@entity/User' import { TransactionLink as DbTransactionLink } from '@entity/TransactionLink' import { Event as DbEvent } from '@entity/Event' -import { Event, EventType } from './Event' +import { Event } from './Event' +import { EventType } from './EventType' export const EVENT_TRANSACTION_LINK_DELETE = async ( user: DbUser, diff --git a/backend/src/event/EVENT_TRANSACTION_LINK_REDEEM.ts b/backend/src/event/EVENT_TRANSACTION_LINK_REDEEM.ts index 5f8cd5c4d..75bc87916 100644 --- a/backend/src/event/EVENT_TRANSACTION_LINK_REDEEM.ts +++ b/backend/src/event/EVENT_TRANSACTION_LINK_REDEEM.ts @@ -2,7 +2,8 @@ import { Decimal } from 'decimal.js-light' import { User as DbUser } from '@entity/User' import { TransactionLink as DbTransactionLink } from '@entity/TransactionLink' import { Event as DbEvent } from '@entity/Event' -import { Event, EventType } from './Event' +import { Event } from './Event' +import { EventType } from './EventType' export const EVENT_TRANSACTION_LINK_REDEEM = async ( user: DbUser, diff --git a/backend/src/event/EVENT_TRANSACTION_RECEIVE.ts b/backend/src/event/EVENT_TRANSACTION_RECEIVE.ts index c6e06ccb7..a09e1c4b2 100644 --- a/backend/src/event/EVENT_TRANSACTION_RECEIVE.ts +++ b/backend/src/event/EVENT_TRANSACTION_RECEIVE.ts @@ -2,7 +2,8 @@ import { Decimal } from 'decimal.js-light' import { User as DbUser } from '@entity/User' import { Transaction as DbTransaction } from '@entity/Transaction' import { Event as DbEvent } from '@entity/Event' -import { Event, EventType } from './Event' +import { Event } from './Event' +import { EventType } from './EventType' export const EVENT_TRANSACTION_RECEIVE = async ( user: DbUser, diff --git a/backend/src/event/EVENT_TRANSACTION_SEND.ts b/backend/src/event/EVENT_TRANSACTION_SEND.ts index 888162747..71c70a425 100644 --- a/backend/src/event/EVENT_TRANSACTION_SEND.ts +++ b/backend/src/event/EVENT_TRANSACTION_SEND.ts @@ -2,7 +2,8 @@ import { Decimal } from 'decimal.js-light' import { User as DbUser } from '@entity/User' import { Transaction as DbTransaction } from '@entity/Transaction' import { Event as DbEvent } from '@entity/Event' -import { Event, EventType } from './Event' +import { Event } from './Event' +import { EventType } from './EventType' export const EVENT_TRANSACTION_SEND = async ( user: DbUser, diff --git a/backend/src/event/EVENT_USER_ACTIVATE_ACCOUNT.ts b/backend/src/event/EVENT_USER_ACTIVATE_ACCOUNT.ts index 2e224d550..9b2ce31ee 100644 --- a/backend/src/event/EVENT_USER_ACTIVATE_ACCOUNT.ts +++ b/backend/src/event/EVENT_USER_ACTIVATE_ACCOUNT.ts @@ -1,6 +1,7 @@ import { User as DbUser } from '@entity/User' import { Event as DbEvent } from '@entity/Event' -import { Event, EventType } from './Event' +import { Event } from './Event' +import { EventType } from './EventType' export const EVENT_USER_ACTIVATE_ACCOUNT = async (user: DbUser): Promise => Event(EventType.USER_ACTIVATE_ACCOUNT, user, user).save() diff --git a/backend/src/event/EVENT_USER_INFO_UPDATE.ts b/backend/src/event/EVENT_USER_INFO_UPDATE.ts index 681ecd473..6b9d89738 100644 --- a/backend/src/event/EVENT_USER_INFO_UPDATE.ts +++ b/backend/src/event/EVENT_USER_INFO_UPDATE.ts @@ -1,6 +1,7 @@ import { User as DbUser } from '@entity/User' import { Event as DbEvent } from '@entity/Event' -import { Event, EventType } from './Event' +import { Event } from './Event' +import { EventType } from './EventType' export const EVENT_USER_INFO_UPDATE = async (user: DbUser): Promise => Event(EventType.USER_INFO_UPDATE, user, user).save() diff --git a/backend/src/event/EVENT_USER_LOGIN.ts b/backend/src/event/EVENT_USER_LOGIN.ts index 351ec5a95..81477b8a6 100644 --- a/backend/src/event/EVENT_USER_LOGIN.ts +++ b/backend/src/event/EVENT_USER_LOGIN.ts @@ -1,6 +1,7 @@ import { User as DbUser } from '@entity/User' import { Event as DbEvent } from '@entity/Event' -import { Event, EventType } from './Event' +import { Event } from './Event' +import { EventType } from './EventType' export const EVENT_USER_LOGIN = async (user: DbUser): Promise => Event(EventType.USER_LOGIN, user, user).save() diff --git a/backend/src/event/EVENT_USER_LOGOUT.ts b/backend/src/event/EVENT_USER_LOGOUT.ts index 4f5650fc6..c6c63405a 100644 --- a/backend/src/event/EVENT_USER_LOGOUT.ts +++ b/backend/src/event/EVENT_USER_LOGOUT.ts @@ -1,6 +1,7 @@ import { User as DbUser } from '@entity/User' import { Event as DbEvent } from '@entity/Event' -import { Event, EventType } from './Event' +import { Event } from './Event' +import { EventType } from './EventType' export const EVENT_USER_LOGOUT = async (user: DbUser): Promise => Event(EventType.USER_LOGOUT, user, user).save() diff --git a/backend/src/event/EVENT_USER_REGISTER.ts b/backend/src/event/EVENT_USER_REGISTER.ts index cdb8b22e2..45bc6b6f4 100644 --- a/backend/src/event/EVENT_USER_REGISTER.ts +++ b/backend/src/event/EVENT_USER_REGISTER.ts @@ -1,6 +1,7 @@ import { User as DbUser } from '@entity/User' import { Event as DbEvent } from '@entity/Event' -import { Event, EventType } from './Event' +import { Event } from './Event' +import { EventType } from './EventType' export const EVENT_USER_REGISTER = async (user: DbUser): Promise => Event(EventType.USER_REGISTER, user, user).save() diff --git a/backend/src/event/Event.ts b/backend/src/event/Event.ts index feb167adf..d19177b53 100644 --- a/backend/src/event/Event.ts +++ b/backend/src/event/Event.ts @@ -33,37 +33,3 @@ export const Event = ( event.amount = amount return event } - -export { EventType } - -export { EVENT_ADMIN_CONTRIBUTION_CONFIRM } from './EVENT_ADMIN_CONTRIBUTION_CONFIRM' -export { EVENT_ADMIN_CONTRIBUTION_CREATE } from './EVENT_ADMIN_CONTRIBUTION_CREATE' -export { EVENT_ADMIN_CONTRIBUTION_DELETE } from './EVENT_ADMIN_CONTRIBUTION_DELETE' -export { EVENT_ADMIN_CONTRIBUTION_DENY } from './EVENT_ADMIN_CONTRIBUTION_DENY' -export { EVENT_ADMIN_CONTRIBUTION_UPDATE } from './EVENT_ADMIN_CONTRIBUTION_UPDATE' -export { EVENT_ADMIN_CONTRIBUTION_LINK_CREATE } from './EVENT_ADMIN_CONTRIBUTION_LINK_CREATE' -export { EVENT_ADMIN_CONTRIBUTION_LINK_DELETE } from './EVENT_ADMIN_CONTRIBUTION_LINK_DELETE' -export { EVENT_ADMIN_CONTRIBUTION_LINK_UPDATE } from './EVENT_ADMIN_CONTRIBUTION_LINK_UPDATE' -export { EVENT_ADMIN_CONTRIBUTION_MESSAGE_CREATE } from './EVENT_ADMIN_CONTRIBUTION_MESSAGE_CREATE' -export { EVENT_ADMIN_USER_DELETE } from './EVENT_ADMIN_USER_DELETE' -export { EVENT_ADMIN_USER_UNDELETE } from './EVENT_ADMIN_USER_UNDELETE' -export { EVENT_ADMIN_USER_ROLE_SET } from './EVENT_ADMIN_USER_ROLE_SET' -export { EVENT_CONTRIBUTION_CREATE } from './EVENT_CONTRIBUTION_CREATE' -export { EVENT_CONTRIBUTION_DELETE } from './EVENT_CONTRIBUTION_DELETE' -export { EVENT_CONTRIBUTION_UPDATE } from './EVENT_CONTRIBUTION_UPDATE' -export { EVENT_CONTRIBUTION_MESSAGE_CREATE } from './EVENT_CONTRIBUTION_MESSAGE_CREATE' -export { EVENT_CONTRIBUTION_LINK_REDEEM } from './EVENT_CONTRIBUTION_LINK_REDEEM' -export { EVENT_EMAIL_ACCOUNT_MULTIREGISTRATION } from './EVENT_EMAIL_ACCOUNT_MULTIREGISTRATION' -export { EVENT_EMAIL_ADMIN_CONFIRMATION } from './EVENT_EMAIL_ADMIN_CONFIRMATION' -export { EVENT_EMAIL_CONFIRMATION } from './EVENT_EMAIL_CONFIRMATION' -export { EVENT_EMAIL_FORGOT_PASSWORD } from './EVENT_EMAIL_FORGOT_PASSWORD' -export { EVENT_TRANSACTION_SEND } from './EVENT_TRANSACTION_SEND' -export { EVENT_TRANSACTION_RECEIVE } from './EVENT_TRANSACTION_RECEIVE' -export { EVENT_TRANSACTION_LINK_CREATE } from './EVENT_TRANSACTION_LINK_CREATE' -export { EVENT_TRANSACTION_LINK_DELETE } from './EVENT_TRANSACTION_LINK_DELETE' -export { EVENT_TRANSACTION_LINK_REDEEM } from './EVENT_TRANSACTION_LINK_REDEEM' -export { EVENT_USER_ACTIVATE_ACCOUNT } from './EVENT_USER_ACTIVATE_ACCOUNT' -export { EVENT_USER_INFO_UPDATE } from './EVENT_USER_INFO_UPDATE' -export { EVENT_USER_LOGIN } from './EVENT_USER_LOGIN' -export { EVENT_USER_LOGOUT } from './EVENT_USER_LOGOUT' -export { EVENT_USER_REGISTER } from './EVENT_USER_REGISTER' diff --git a/backend/src/event/Events.ts b/backend/src/event/Events.ts new file mode 100644 index 000000000..d217cde28 --- /dev/null +++ b/backend/src/event/Events.ts @@ -0,0 +1,33 @@ +export { EventType } from './EventType' +export { Event } from './Event' +export { EVENT_ADMIN_CONTRIBUTION_CONFIRM } from './EVENT_ADMIN_CONTRIBUTION_CONFIRM' +export { EVENT_ADMIN_CONTRIBUTION_CREATE } from './EVENT_ADMIN_CONTRIBUTION_CREATE' +export { EVENT_ADMIN_CONTRIBUTION_DELETE } from './EVENT_ADMIN_CONTRIBUTION_DELETE' +export { EVENT_ADMIN_CONTRIBUTION_DENY } from './EVENT_ADMIN_CONTRIBUTION_DENY' +export { EVENT_ADMIN_CONTRIBUTION_UPDATE } from './EVENT_ADMIN_CONTRIBUTION_UPDATE' +export { EVENT_ADMIN_CONTRIBUTION_LINK_CREATE } from './EVENT_ADMIN_CONTRIBUTION_LINK_CREATE' +export { EVENT_ADMIN_CONTRIBUTION_LINK_DELETE } from './EVENT_ADMIN_CONTRIBUTION_LINK_DELETE' +export { EVENT_ADMIN_CONTRIBUTION_LINK_UPDATE } from './EVENT_ADMIN_CONTRIBUTION_LINK_UPDATE' +export { EVENT_ADMIN_CONTRIBUTION_MESSAGE_CREATE } from './EVENT_ADMIN_CONTRIBUTION_MESSAGE_CREATE' +export { EVENT_ADMIN_USER_DELETE } from './EVENT_ADMIN_USER_DELETE' +export { EVENT_ADMIN_USER_UNDELETE } from './EVENT_ADMIN_USER_UNDELETE' +export { EVENT_ADMIN_USER_ROLE_SET } from './EVENT_ADMIN_USER_ROLE_SET' +export { EVENT_CONTRIBUTION_CREATE } from './EVENT_CONTRIBUTION_CREATE' +export { EVENT_CONTRIBUTION_DELETE } from './EVENT_CONTRIBUTION_DELETE' +export { EVENT_CONTRIBUTION_UPDATE } from './EVENT_CONTRIBUTION_UPDATE' +export { EVENT_CONTRIBUTION_MESSAGE_CREATE } from './EVENT_CONTRIBUTION_MESSAGE_CREATE' +export { EVENT_CONTRIBUTION_LINK_REDEEM } from './EVENT_CONTRIBUTION_LINK_REDEEM' +export { EVENT_EMAIL_ACCOUNT_MULTIREGISTRATION } from './EVENT_EMAIL_ACCOUNT_MULTIREGISTRATION' +export { EVENT_EMAIL_ADMIN_CONFIRMATION } from './EVENT_EMAIL_ADMIN_CONFIRMATION' +export { EVENT_EMAIL_CONFIRMATION } from './EVENT_EMAIL_CONFIRMATION' +export { EVENT_EMAIL_FORGOT_PASSWORD } from './EVENT_EMAIL_FORGOT_PASSWORD' +export { EVENT_TRANSACTION_SEND } from './EVENT_TRANSACTION_SEND' +export { EVENT_TRANSACTION_RECEIVE } from './EVENT_TRANSACTION_RECEIVE' +export { EVENT_TRANSACTION_LINK_CREATE } from './EVENT_TRANSACTION_LINK_CREATE' +export { EVENT_TRANSACTION_LINK_DELETE } from './EVENT_TRANSACTION_LINK_DELETE' +export { EVENT_TRANSACTION_LINK_REDEEM } from './EVENT_TRANSACTION_LINK_REDEEM' +export { EVENT_USER_ACTIVATE_ACCOUNT } from './EVENT_USER_ACTIVATE_ACCOUNT' +export { EVENT_USER_INFO_UPDATE } from './EVENT_USER_INFO_UPDATE' +export { EVENT_USER_LOGIN } from './EVENT_USER_LOGIN' +export { EVENT_USER_LOGOUT } from './EVENT_USER_LOGOUT' +export { EVENT_USER_REGISTER } from './EVENT_USER_REGISTER' diff --git a/backend/src/graphql/resolver/ContributionLinkResolver.test.ts b/backend/src/graphql/resolver/ContributionLinkResolver.test.ts index 6a69e257e..d89edc695 100644 --- a/backend/src/graphql/resolver/ContributionLinkResolver.test.ts +++ b/backend/src/graphql/resolver/ContributionLinkResolver.test.ts @@ -20,7 +20,7 @@ import { cleanDB, testEnvironment, resetToken } from '@test/helpers' import { bibiBloxberg } from '@/seeds/users/bibi-bloxberg' import { peterLustig } from '@/seeds/users/peter-lustig' import { userFactory } from '@/seeds/factory/user' -import { EventType } from '@/event/Event' +import { EventType } from '@/event/Events' let mutate: any, query: any, con: any let testEnv: any diff --git a/backend/src/graphql/resolver/ContributionLinkResolver.ts b/backend/src/graphql/resolver/ContributionLinkResolver.ts index 55a23187f..6328bd3bc 100644 --- a/backend/src/graphql/resolver/ContributionLinkResolver.ts +++ b/backend/src/graphql/resolver/ContributionLinkResolver.ts @@ -25,7 +25,7 @@ import { EVENT_ADMIN_CONTRIBUTION_LINK_CREATE, EVENT_ADMIN_CONTRIBUTION_LINK_DELETE, EVENT_ADMIN_CONTRIBUTION_LINK_UPDATE, -} from '@/event/Event' +} from '@/event/Events' @Resolver() export class ContributionLinkResolver { diff --git a/backend/src/graphql/resolver/ContributionMessageResolver.test.ts b/backend/src/graphql/resolver/ContributionMessageResolver.test.ts index 6b2c7c4d8..b8125f8cb 100644 --- a/backend/src/graphql/resolver/ContributionMessageResolver.test.ts +++ b/backend/src/graphql/resolver/ContributionMessageResolver.test.ts @@ -21,7 +21,7 @@ import { userFactory } from '@/seeds/factory/user' import { bibiBloxberg } from '@/seeds/users/bibi-bloxberg' import { peterLustig } from '@/seeds/users/peter-lustig' import { sendAddedContributionMessageEmail } from '@/emails/sendEmailVariants' -import { EventType } from '@/event/Event' +import { EventType } from '@/event/Events' jest.mock('@/emails/sendEmailVariants', () => { const originalModule = jest.requireActual('@/emails/sendEmailVariants') diff --git a/backend/src/graphql/resolver/ContributionMessageResolver.ts b/backend/src/graphql/resolver/ContributionMessageResolver.ts index 999ccc2b1..276183894 100644 --- a/backend/src/graphql/resolver/ContributionMessageResolver.ts +++ b/backend/src/graphql/resolver/ContributionMessageResolver.ts @@ -21,7 +21,7 @@ import LogError from '@/server/LogError' import { EVENT_ADMIN_CONTRIBUTION_MESSAGE_CREATE, EVENT_CONTRIBUTION_MESSAGE_CREATE, -} from '@/event/Event' +} from '@/event/Events' @Resolver() export class ContributionMessageResolver { diff --git a/backend/src/graphql/resolver/ContributionResolver.test.ts b/backend/src/graphql/resolver/ContributionResolver.test.ts index df8524a0c..b99c6b0c7 100644 --- a/backend/src/graphql/resolver/ContributionResolver.test.ts +++ b/backend/src/graphql/resolver/ContributionResolver.test.ts @@ -51,7 +51,7 @@ import { userFactory } from '@/seeds/factory/user' import { creationFactory } from '@/seeds/factory/creation' import { creations } from '@/seeds/creation/index' import { peterLustig } from '@/seeds/users/peter-lustig' -import { EventType } from '@/event/Event' +import { EventType } from '@/event/Events' import { logger, i18n as localization } from '@test/testSetup' import { raeuberHotzenplotz } from '@/seeds/users/raeuber-hotzenplotz' import { UnconfirmedContribution } from '@model/UnconfirmedContribution' diff --git a/backend/src/graphql/resolver/ContributionResolver.ts b/backend/src/graphql/resolver/ContributionResolver.ts index 83cf29fc7..e5112e8b4 100644 --- a/backend/src/graphql/resolver/ContributionResolver.ts +++ b/backend/src/graphql/resolver/ContributionResolver.ts @@ -46,7 +46,7 @@ import { EVENT_ADMIN_CONTRIBUTION_DELETE, EVENT_ADMIN_CONTRIBUTION_CONFIRM, EVENT_ADMIN_CONTRIBUTION_DENY, -} from '@/event/Event' +} from '@/event/Events' import { calculateDecay } from '@/util/decay' import { sendContributionConfirmedEmail, diff --git a/backend/src/graphql/resolver/TransactionLinkResolver.test.ts b/backend/src/graphql/resolver/TransactionLinkResolver.test.ts index 5c2fff0ad..1a15a65a9 100644 --- a/backend/src/graphql/resolver/TransactionLinkResolver.test.ts +++ b/backend/src/graphql/resolver/TransactionLinkResolver.test.ts @@ -35,7 +35,7 @@ import { listTransactionLinksAdmin } from '@/seeds/graphql/queries' import { UnconfirmedContribution } from '@model/UnconfirmedContribution' import { TRANSACTIONS_LOCK } from '@/util/TRANSACTIONS_LOCK' import { logger } from '@test/testSetup' -import { EventType } from '@/event/Event' +import { EventType } from '@/event/Events' // mock semaphore to allow use fake timers jest.mock('@/util/TRANSACTIONS_LOCK') diff --git a/backend/src/graphql/resolver/TransactionLinkResolver.ts b/backend/src/graphql/resolver/TransactionLinkResolver.ts index 6aa829ac1..3b2f7704a 100644 --- a/backend/src/graphql/resolver/TransactionLinkResolver.ts +++ b/backend/src/graphql/resolver/TransactionLinkResolver.ts @@ -38,7 +38,7 @@ import { EVENT_TRANSACTION_LINK_CREATE, EVENT_TRANSACTION_LINK_DELETE, EVENT_TRANSACTION_LINK_REDEEM, -} from '@/event/Event' +} from '@/event/Events' // TODO: do not export, test it inside the resolver export const transactionLinkCode = (date: Date): string => { diff --git a/backend/src/graphql/resolver/TransactionResolver.test.ts b/backend/src/graphql/resolver/TransactionResolver.test.ts index f26234363..0ac1f724a 100644 --- a/backend/src/graphql/resolver/TransactionResolver.test.ts +++ b/backend/src/graphql/resolver/TransactionResolver.test.ts @@ -11,7 +11,7 @@ import { User } from '@entity/User' import { GraphQLError } from 'graphql' import { Event as DbEvent } from '@entity/Event' import { findUserByEmail } from './UserResolver' -import { EventType } from '@/event/Event' +import { EventType } from '@/event/Events' import { userFactory } from '@/seeds/factory/user' import { confirmContribution, diff --git a/backend/src/graphql/resolver/TransactionResolver.ts b/backend/src/graphql/resolver/TransactionResolver.ts index f38a4a07b..3620dbcef 100644 --- a/backend/src/graphql/resolver/TransactionResolver.ts +++ b/backend/src/graphql/resolver/TransactionResolver.ts @@ -34,7 +34,7 @@ import { sendTransactionLinkRedeemedEmail, sendTransactionReceivedEmail, } from '@/emails/sendEmailVariants' -import { EVENT_TRANSACTION_RECEIVE, EVENT_TRANSACTION_SEND } from '@/event/Event' +import { EVENT_TRANSACTION_RECEIVE, EVENT_TRANSACTION_SEND } from '@/event/Events' import { TRANSACTIONS_LOCK } from '@/util/TRANSACTIONS_LOCK' import LogError from '@/server/LogError' diff --git a/backend/src/graphql/resolver/UserResolver.test.ts b/backend/src/graphql/resolver/UserResolver.test.ts index aebd0f0eb..735c27950 100644 --- a/backend/src/graphql/resolver/UserResolver.test.ts +++ b/backend/src/graphql/resolver/UserResolver.test.ts @@ -45,7 +45,7 @@ import { import { contributionLinkFactory } from '@/seeds/factory/contributionLink' import { transactionLinkFactory } from '@/seeds/factory/transactionLink' import { ContributionLink } from '@model/ContributionLink' -import { EventType } from '@/event/Event' +import { EventType } from '@/event/Events' import { peterLustig } from '@/seeds/users/peter-lustig' import { bobBaumeister } from '@/seeds/users/bob-baumeister' import { stephenHawking } from '@/seeds/users/stephen-hawking' diff --git a/backend/src/graphql/resolver/UserResolver.ts b/backend/src/graphql/resolver/UserResolver.ts index 54d4f583f..8f72b3bcf 100644 --- a/backend/src/graphql/resolver/UserResolver.ts +++ b/backend/src/graphql/resolver/UserResolver.ts @@ -70,7 +70,7 @@ import { EVENT_ADMIN_USER_ROLE_SET, EVENT_ADMIN_USER_DELETE, EVENT_ADMIN_USER_UNDELETE, -} from '@/event/Event' +} from '@/event/Events' import { isValidPassword } from '@/password/EncryptorUtils' import { encryptPassword, verifyPassword } from '@/password/PasswordEncryptor' import LogError from '@/server/LogError' From c0680d332d36d8b45102d8dd39431950bfc07df7 Mon Sep 17 00:00:00 2001 From: ogerly Date: Wed, 29 Mar 2023 16:43:03 +0200 Subject: [PATCH 03/17] Transaction info, right-justified, so that the commas --- .../DecayInformation-Long.vue | 20 +++++++++++-------- .../TransactionRows/DurationRow.vue | 2 +- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/frontend/src/components/DecayInformations/DecayInformation-Long.vue b/frontend/src/components/DecayInformations/DecayInformation-Long.vue index 782fe049c..0fd6b7f5c 100644 --- a/frontend/src/components/DecayInformations/DecayInformation-Long.vue +++ b/frontend/src/components/DecayInformations/DecayInformation-Long.vue @@ -14,7 +14,7 @@
{{ $t('decay.last_transaction') }}
- +
{{ $d(new Date(decay.start), 'long') }} @@ -25,11 +25,13 @@ - - + +
{{ $t('decay.decay') }}
- {{ decay.decay | GDD }} + + {{ decay.decay | GDD }} +
@@ -38,15 +40,17 @@ - {{ $t(`decay.types.${typeId.toLowerCase()}`) }} - {{ amount | GDD }} + {{ $t(`decay.types.${typeId.toLowerCase()}`) }} + + {{ amount | GDD }} + - +
{{ $t('decay.total') }}
- + {{ (Number(amount) + Number(decay.decay)) | GDD }}
diff --git a/frontend/src/components/TransactionRows/DurationRow.vue b/frontend/src/components/TransactionRows/DurationRow.vue index 9cadf8c24..aa20132d7 100644 --- a/frontend/src/components/TransactionRows/DurationRow.vue +++ b/frontend/src/components/TransactionRows/DurationRow.vue @@ -4,7 +4,7 @@
{{ $t('decay.past_time') }}
- + {{ durationText }} From 05fc48198e28fdad9d15b290aa71690c695ebd4d Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Fri, 31 Mar 2023 12:08:55 +0200 Subject: [PATCH 04/17] merge conflicts --- backend/src/event/EVENT_ADMIN_CONTRIBUTION_CONFIRM.ts | 2 -- backend/src/graphql/resolver/ContributionLinkResolver.test.ts | 2 +- backend/src/graphql/resolver/TransactionLinkResolver.test.ts | 2 +- 3 files changed, 2 insertions(+), 4 deletions(-) diff --git a/backend/src/event/EVENT_ADMIN_CONTRIBUTION_CONFIRM.ts b/backend/src/event/EVENT_ADMIN_CONTRIBUTION_CONFIRM.ts index 390662ec1..36cabba63 100644 --- a/backend/src/event/EVENT_ADMIN_CONTRIBUTION_CONFIRM.ts +++ b/backend/src/event/EVENT_ADMIN_CONTRIBUTION_CONFIRM.ts @@ -1,10 +1,8 @@ import { Contribution as DbContribution } from '@entity/Contribution' import { Event as DbEvent } from '@entity/Event' - import { User as DbUser } from '@entity/User' import { Decimal } from 'decimal.js-light' - import { Event } from './Event' import { EventType } from './EventType' diff --git a/backend/src/graphql/resolver/ContributionLinkResolver.test.ts b/backend/src/graphql/resolver/ContributionLinkResolver.test.ts index 2247318a3..318b5a230 100644 --- a/backend/src/graphql/resolver/ContributionLinkResolver.test.ts +++ b/backend/src/graphql/resolver/ContributionLinkResolver.test.ts @@ -12,7 +12,7 @@ import { GraphQLError } from 'graphql' import { cleanDB, testEnvironment, resetToken } from '@test/helpers' import { logger } from '@test/testSetup' -import { EventType } from '@/event/Event' +import { EventType } from '@/event/Events' import { userFactory } from '@/seeds/factory/user' import { login, diff --git a/backend/src/graphql/resolver/TransactionLinkResolver.test.ts b/backend/src/graphql/resolver/TransactionLinkResolver.test.ts index 70238e515..0d47b8006 100644 --- a/backend/src/graphql/resolver/TransactionLinkResolver.test.ts +++ b/backend/src/graphql/resolver/TransactionLinkResolver.test.ts @@ -18,7 +18,7 @@ import { UnconfirmedContribution } from '@model/UnconfirmedContribution' import { cleanDB, testEnvironment, resetToken, resetEntity } from '@test/helpers' import { logger } from '@test/testSetup' -import { EventType } from '@/event/Event' +import { EventType } from '@/event/Events' import { creations } from '@/seeds/creation/index' import { creationFactory } from '@/seeds/factory/creation' import { transactionLinkFactory } from '@/seeds/factory/transactionLink' From 1fa6d3e46943acf9f3697c4b3cb2a61cfd319a31 Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Fri, 31 Mar 2023 12:10:50 +0200 Subject: [PATCH 05/17] lint fixes --- backend/src/graphql/resolver/ContributionResolver.test.ts | 4 ++-- backend/src/graphql/resolver/TransactionLinkResolver.test.ts | 1 + backend/src/graphql/resolver/TransactionResolver.test.ts | 1 + backend/src/graphql/resolver/TransactionResolver.ts | 3 +-- 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/backend/src/graphql/resolver/ContributionResolver.test.ts b/backend/src/graphql/resolver/ContributionResolver.test.ts index 5bca29972..8a391618e 100644 --- a/backend/src/graphql/resolver/ContributionResolver.test.ts +++ b/backend/src/graphql/resolver/ContributionResolver.test.ts @@ -25,12 +25,14 @@ import { contributionDateFormatter, resetEntity, } from '@test/helpers' +import { logger, i18n as localization } from '@test/testSetup' import { sendContributionConfirmedEmail, sendContributionDeletedEmail, sendContributionDeniedEmail, } from '@/emails/sendEmailVariants' +import { EventType } from '@/event/Events' import { creations } from '@/seeds/creation/index' import { creationFactory } from '@/seeds/factory/creation' import { userFactory } from '@/seeds/factory/user' @@ -56,8 +58,6 @@ import { bibiBloxberg } from '@/seeds/users/bibi-bloxberg' import { bobBaumeister } from '@/seeds/users/bob-baumeister' import { garrickOllivander } from '@/seeds/users/garrick-ollivander' import { peterLustig } from '@/seeds/users/peter-lustig' -import { EventType } from '@/event/Events' -import { logger, i18n as localization } from '@test/testSetup' import { raeuberHotzenplotz } from '@/seeds/users/raeuber-hotzenplotz' import { stephenHawking } from '@/seeds/users/stephen-hawking' diff --git a/backend/src/graphql/resolver/TransactionLinkResolver.test.ts b/backend/src/graphql/resolver/TransactionLinkResolver.test.ts index 0d47b8006..1c79e2815 100644 --- a/backend/src/graphql/resolver/TransactionLinkResolver.test.ts +++ b/backend/src/graphql/resolver/TransactionLinkResolver.test.ts @@ -38,6 +38,7 @@ import { transactionLinks } from '@/seeds/transactionLink/index' import { bibiBloxberg } from '@/seeds/users/bibi-bloxberg' import { peterLustig } from '@/seeds/users/peter-lustig' import { TRANSACTIONS_LOCK } from '@/util/TRANSACTIONS_LOCK' + import { transactionLinkCode } from './TransactionLinkResolver' // mock semaphore to allow use fake timers diff --git a/backend/src/graphql/resolver/TransactionResolver.test.ts b/backend/src/graphql/resolver/TransactionResolver.test.ts index 63606e4ee..65fb13996 100644 --- a/backend/src/graphql/resolver/TransactionResolver.test.ts +++ b/backend/src/graphql/resolver/TransactionResolver.test.ts @@ -10,6 +10,7 @@ import { Transaction } from '@entity/Transaction' import { User } from '@entity/User' import { Decimal } from 'decimal.js-light' import { GraphQLError } from 'graphql' + import { cleanDB, testEnvironment } from '@test/helpers' import { logger } from '@test/testSetup' diff --git a/backend/src/graphql/resolver/TransactionResolver.ts b/backend/src/graphql/resolver/TransactionResolver.ts index a78d51e7a..eb9b19b3f 100644 --- a/backend/src/graphql/resolver/TransactionResolver.ts +++ b/backend/src/graphql/resolver/TransactionResolver.ts @@ -25,12 +25,11 @@ import { sendTransactionReceivedEmail, } from '@/emails/sendEmailVariants' import { EVENT_TRANSACTION_RECEIVE, EVENT_TRANSACTION_SEND } from '@/event/Events' - -import { TRANSACTIONS_LOCK } from '@/util/TRANSACTIONS_LOCK' import { Context, getUser } from '@/server/context' import LogError from '@/server/LogError' import { backendLogger as logger } from '@/server/logger' import { communityUser } from '@/util/communityUser' +import { TRANSACTIONS_LOCK } from '@/util/TRANSACTIONS_LOCK' import { calculateBalance } from '@/util/validate' import { virtualLinkTransaction, virtualDecayTransaction } from '@/util/virtualTransactions' From 60ccdc5beb194ae771ae7606562b60de74aced6d Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Mon, 3 Apr 2023 12:54:11 +0200 Subject: [PATCH 06/17] feat(backend): previuos balance in transaction --- backend/src/graphql/model/Transaction.ts | 11 ++++++++++- backend/src/graphql/resolver/TransactionResolver.ts | 5 +++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/backend/src/graphql/model/Transaction.ts b/backend/src/graphql/model/Transaction.ts index 1b857391b..dc20a5c83 100644 --- a/backend/src/graphql/model/Transaction.ts +++ b/backend/src/graphql/model/Transaction.ts @@ -9,7 +9,12 @@ import { User } from './User' @ObjectType() export class Transaction { - constructor(transaction: dbTransaction, user: User, linkedUser: User | null = null) { + constructor( + transaction: dbTransaction, + user: User, + linkedUser: User | null = null, + previuosBalance: Decimal = new Decimal(0), + ) { this.id = transaction.id this.user = user this.previous = transaction.previous @@ -47,6 +52,7 @@ export class Transaction { this.linkId = transaction.contribution ? transaction.contribution.contributionLinkId : transaction.transactionLinkId || null + this.previousBalance = previuosBalance } @Field(() => Int) @@ -70,6 +76,9 @@ export class Transaction { @Field(() => Date) balanceDate: Date + @Field(() => Decimal) + previousBalance: Decimal + @Field(() => Decay) decay: Decay diff --git a/backend/src/graphql/resolver/TransactionResolver.ts b/backend/src/graphql/resolver/TransactionResolver.ts index 430cdb363..8c51c6681 100644 --- a/backend/src/graphql/resolver/TransactionResolver.ts +++ b/backend/src/graphql/resolver/TransactionResolver.ts @@ -283,12 +283,13 @@ export class TransactionResolver { } // transactions - userTransactions.forEach((userTransaction) => { + userTransactions.forEach((userTransaction, idx) => { const linkedUser = userTransaction.typeId === TransactionTypeId.CREATION ? communityUser : involvedUsers.find((u) => u.id === userTransaction.linkedUserId) - transactions.push(new Transaction(userTransaction, self, linkedUser)) + const previousBalance = idx ? userTransactions[idx - 1].balance : new Decimal(0) + transactions.push(new Transaction(userTransaction, self, linkedUser, previousBalance)) }) logger.debug(`TransactionTypeId.CREATION: transactions=${transactions}`) From d5782735896c61abc774292a4a9bdea2b192711e Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Mon, 3 Apr 2023 14:17:42 +0200 Subject: [PATCH 07/17] correct calculation of previuos balance --- backend/src/graphql/model/Transaction.ts | 2 +- backend/src/graphql/resolver/TransactionResolver.ts | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/backend/src/graphql/model/Transaction.ts b/backend/src/graphql/model/Transaction.ts index dc20a5c83..50ca7d098 100644 --- a/backend/src/graphql/model/Transaction.ts +++ b/backend/src/graphql/model/Transaction.ts @@ -52,7 +52,7 @@ export class Transaction { this.linkId = transaction.contribution ? transaction.contribution.contributionLinkId : transaction.transactionLinkId || null - this.previousBalance = previuosBalance + this.previousBalance = previuosBalance.toDecimalPlaces(2, Decimal.ROUND_DOWN) } @Field(() => Int) diff --git a/backend/src/graphql/resolver/TransactionResolver.ts b/backend/src/graphql/resolver/TransactionResolver.ts index 8c51c6681..72e919dad 100644 --- a/backend/src/graphql/resolver/TransactionResolver.ts +++ b/backend/src/graphql/resolver/TransactionResolver.ts @@ -288,7 +288,8 @@ export class TransactionResolver { userTransaction.typeId === TransactionTypeId.CREATION ? communityUser : involvedUsers.find((u) => u.id === userTransaction.linkedUserId) - const previousBalance = idx ? userTransactions[idx - 1].balance : new Decimal(0) + const previousBalance = + idx < userTransactions.length - 1 ? userTransactions[idx + 1].balance : new Decimal(0) transactions.push(new Transaction(userTransaction, self, linkedUser, previousBalance)) }) logger.debug(`TransactionTypeId.CREATION: transactions=${transactions}`) From adbd8b1e5d01a71c7a98aa6a1808bd817c021e90 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Mon, 3 Apr 2023 14:50:22 +0200 Subject: [PATCH 08/17] add previous balance to virtual transaction link transaction --- backend/src/graphql/resolver/TransactionResolver.ts | 1 + backend/src/util/virtualTransactions.ts | 8 +++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/backend/src/graphql/resolver/TransactionResolver.ts b/backend/src/graphql/resolver/TransactionResolver.ts index 72e919dad..d855a0701 100644 --- a/backend/src/graphql/resolver/TransactionResolver.ts +++ b/backend/src/graphql/resolver/TransactionResolver.ts @@ -276,6 +276,7 @@ export class TransactionResolver { firstDate || now, lastDate || now, self, + (userTransactions.length && userTransactions[0].balance) || new Decimal(0), ), ) logger.debug(`transactions=${transactions}`) diff --git a/backend/src/util/virtualTransactions.ts b/backend/src/util/virtualTransactions.ts index 68a37746b..9f4def31e 100644 --- a/backend/src/util/virtualTransactions.ts +++ b/backend/src/util/virtualTransactions.ts @@ -38,6 +38,7 @@ const virtualLinkTransaction = ( createdAt: Date, validUntil: Date, user: User, + previousBalance: Decimal, ): Transaction => { const linkDbTransaction: dbTransaction = { id: -2, @@ -54,7 +55,12 @@ const virtualLinkTransaction = ( contribution: null, ...defaultModelFunctions, } - return new Transaction(linkDbTransaction, user) + return new Transaction( + linkDbTransaction, + user, + null, + previousBalance.toDecimalPlaces(2, Decimal.ROUND_DOWN), + ) } const virtualDecayTransaction = ( From 0a62c87dd992686302067d02ba2ad23d63b787c2 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Mon, 3 Apr 2023 14:54:48 +0200 Subject: [PATCH 09/17] locales for new and old balance --- frontend/src/locales/de.json | 2 ++ frontend/src/locales/en.json | 2 ++ 2 files changed, 4 insertions(+) diff --git a/frontend/src/locales/de.json b/frontend/src/locales/de.json index b8635f44a..a5357e6d9 100644 --- a/frontend/src/locales/de.json +++ b/frontend/src/locales/de.json @@ -89,6 +89,8 @@ "decay_introduced": "Die Vergänglichkeit wurde eingeführt am:", "decay_since_last_transaction": "Vergänglichkeit seit der letzten Transaktion", "last_transaction": "Letzte Transaktion", + "new_balance": "Neuer Kontostand", + "old_balance": "Vorheriger Kontostand", "past_time": "Vergangene Zeit", "Starting_block_decay": "Startblock Vergänglichkeit", "total": "Gesamt", diff --git a/frontend/src/locales/en.json b/frontend/src/locales/en.json index 15449a208..42f22f709 100644 --- a/frontend/src/locales/en.json +++ b/frontend/src/locales/en.json @@ -89,6 +89,8 @@ "decay_introduced": "Decay was introduced on:", "decay_since_last_transaction": "Decay since the last transaction", "last_transaction": "Last transaction:", + "new_balance": "New balance", + "old_balance": "Previous balance", "past_time": "Time passed", "Starting_block_decay": "Starting Block Decay", "total": "Total", From 545e55659955c2de3371a7d352fe5a0fa8d5320e Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Mon, 3 Apr 2023 14:55:22 +0200 Subject: [PATCH 10/17] previuos balance from server, displayed in decay details --- .../DecayInformation-Decay.vue | 4 +-- .../DecayInformation-Long.vue | 22 +++++++++++---- .../DecayInformations/DecayInformation.vue | 18 ++++++++++++- .../src/components/GddTransactionList.vue | 27 +++---------------- .../Transactions/TransactionCreation.vue | 15 +++++++++-- .../Transactions/TransactionDecay.vue | 9 ++++--- .../Transactions/TransactionReceive.vue | 15 +++++++++-- .../Transactions/TransactionSend.vue | 15 +++++++++-- frontend/src/graphql/queries.js | 1 + 9 files changed, 85 insertions(+), 41 deletions(-) diff --git a/frontend/src/components/DecayInformations/DecayInformation-Decay.vue b/frontend/src/components/DecayInformations/DecayInformation-Decay.vue index 7abdb0f2b..ce679fb30 100644 --- a/frontend/src/components/DecayInformations/DecayInformation-Decay.vue +++ b/frontend/src/components/DecayInformations/DecayInformation-Decay.vue @@ -12,7 +12,7 @@
- {{ previousBookedBalance | GDD }} + {{ previousBalance | GDD }} {{ decay === '0' ? $t('math.minus') : '' }} {{ decay | GDD }} {{ $t('math.equal') }} {{ balance | GDD }} @@ -35,7 +35,7 @@ export default { type: String, required: true, }, - previousBookedBalance: { + previousBalance: { type: String, required: true, }, diff --git a/frontend/src/components/DecayInformations/DecayInformation-Long.vue b/frontend/src/components/DecayInformations/DecayInformation-Long.vue index 0fd6b7f5c..d7e943225 100644 --- a/frontend/src/components/DecayInformations/DecayInformation-Long.vue +++ b/frontend/src/components/DecayInformations/DecayInformation-Long.vue @@ -24,8 +24,18 @@ - + + +
{{ $t('decay.old_balance') }}
+
+ + {{ previousBalance | GDD }} + +
+ + +
{{ $t('decay.decay') }}
@@ -38,7 +48,7 @@ - + {{ $t(`decay.types.${typeId.toLowerCase()}`) }} @@ -46,12 +56,12 @@ - + -
{{ $t('decay.total') }}
+
{{ $t('decay.new_balance') }}
- {{ (Number(amount) + Number(decay.decay)) | GDD }} + {{ balance | GDD }}
@@ -67,6 +77,8 @@ export default { DurationRow, }, props: { + balance: { type: String, default: '0' }, + previousBalance: { type: String, default: '0' }, amount: { type: String, default: '0' }, typeId: { type: String, default: '' }, memo: { type: String, default: '' }, diff --git a/frontend/src/components/DecayInformations/DecayInformation.vue b/frontend/src/components/DecayInformations/DecayInformation.vue index 3329fd021..0be12d0de 100644 --- a/frontend/src/components/DecayInformations/DecayInformation.vue +++ b/frontend/src/components/DecayInformations/DecayInformation.vue @@ -7,7 +7,15 @@ :decay="decay" :typeId="typeId" /> - +