From c29245b3cae16734fb15df0163cf304a0c84f316 Mon Sep 17 00:00:00 2001 From: elweyn Date: Sat, 22 Jan 2022 10:00:03 +0100 Subject: [PATCH 001/577] Change the text if the account is not activated yet and changed the button so that we are send to reset password. --- frontend/src/locales/de.json | 2 +- frontend/src/views/Pages/thx.vue | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/frontend/src/locales/de.json b/frontend/src/locales/de.json index 651944547..7ca877c08 100644 --- a/frontend/src/locales/de.json +++ b/frontend/src/locales/de.json @@ -197,7 +197,7 @@ "uppercase": "Großbuchstabe erforderlich." }, "thx": { - "activateEmail": "Dein Konto wurde noch nicht aktiviert. Bitte überprüfe deine E-Mail und klicke den Aktivierungslink!", + "activateEmail": "Dein Konto wurde noch nicht aktiviert. Bitte überprüfe deine E-Mail und klicke den Aktivierungslink! Oder fordere einen neuen Aktivierungslink über die password reset seite.", "checkEmail": "Deine E-Mail wurde erfolgreich verifiziert.", "email": "Wir haben dir eine E-Mail gesendet.", "emailActivated": "Danke dass Du deine E-Mail bestätigt hast.", diff --git a/frontend/src/views/Pages/thx.vue b/frontend/src/views/Pages/thx.vue index 109f03573..605b88ca1 100644 --- a/frontend/src/views/Pages/thx.vue +++ b/frontend/src/views/Pages/thx.vue @@ -45,8 +45,8 @@ const textFields = { login: { headline: 'site.thx.errorTitle', subtitle: 'site.thx.activateEmail', - button: 'login', - linkTo: '/login', + button: 'settings.password.reset', + linkTo: '/password', }, } From 2a4f66a03dd03cdf3ca3c16eca7539132ec90f04 Mon Sep 17 00:00:00 2001 From: elweyn Date: Sat, 22 Jan 2022 10:05:15 +0100 Subject: [PATCH 002/577] If optin code to old send user to the error page that says that the code is not active anymore. --- frontend/src/views/Pages/ResetPassword.vue | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/frontend/src/views/Pages/ResetPassword.vue b/frontend/src/views/Pages/ResetPassword.vue index 05d8a0f6e..393de74ac 100644 --- a/frontend/src/views/Pages/ResetPassword.vue +++ b/frontend/src/views/Pages/ResetPassword.vue @@ -96,8 +96,9 @@ export default { }) .catch((error) => { this.$toasted.global.error(error.message) - if (error.message.includes('Code is older than 10 minutes')) - this.$router.push('/password/reset') + if (error.message.includes('Code is older than 10 minutes')){ + this.$router.push('/thx/login') + } }) }, setDisplaySetup() { From 93aa8c4865b8b294ba0d715930d3a72d966f9858 Mon Sep 17 00:00:00 2001 From: elweyn Date: Sat, 22 Jan 2022 11:14:47 +0100 Subject: [PATCH 003/577] Fix code style. --- frontend/src/views/Pages/ResetPassword.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/views/Pages/ResetPassword.vue b/frontend/src/views/Pages/ResetPassword.vue index 393de74ac..c933e4032 100644 --- a/frontend/src/views/Pages/ResetPassword.vue +++ b/frontend/src/views/Pages/ResetPassword.vue @@ -96,7 +96,7 @@ export default { }) .catch((error) => { this.$toasted.global.error(error.message) - if (error.message.includes('Code is older than 10 minutes')){ + if (error.message.includes('Code is older than 10 minutes')) { this.$router.push('/thx/login') } }) From 3676a57398ceaf34328aa951da1c0eeb1a9ea067 Mon Sep 17 00:00:00 2001 From: elweyn Date: Sat, 22 Jan 2022 13:03:24 +0100 Subject: [PATCH 004/577] Fix test so that the UI changes are represented in the tests. --- frontend/src/views/Pages/ResetPassword.spec.js | 4 ++-- frontend/src/views/Pages/thx.spec.js | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/frontend/src/views/Pages/ResetPassword.spec.js b/frontend/src/views/Pages/ResetPassword.spec.js index e28d16c3e..137a08897 100644 --- a/frontend/src/views/Pages/ResetPassword.spec.js +++ b/frontend/src/views/Pages/ResetPassword.spec.js @@ -146,8 +146,8 @@ describe('ResetPassword', () => { expect(toasterMock).toHaveBeenCalledWith('...Code is older than 10 minutes') }) - it('router pushes to /password/reset', () => { - expect(routerPushMock).toHaveBeenCalledWith('/password/reset') + it('router pushes to /thx/login', () => { + expect(routerPushMock).toHaveBeenCalledWith('/thx/login') }) }) diff --git a/frontend/src/views/Pages/thx.spec.js b/frontend/src/views/Pages/thx.spec.js index 16c5e3ffc..551ff7c77 100644 --- a/frontend/src/views/Pages/thx.spec.js +++ b/frontend/src/views/Pages/thx.spec.js @@ -99,11 +99,11 @@ describe('Thx', () => { }) it('renders the thanks redirect button', () => { - expect(wrapper.find('a.btn').text()).toBe('login') + expect(wrapper.find('a.btn').text()).toBe('settings.password.reset') }) - it('links the redirect button to /login', () => { - expect(wrapper.find('a.btn').attributes('href')).toBe('/login') + it('links the redirect button to /password', () => { + expect(wrapper.find('a.btn').attributes('href')).toBe('/password') }) }) }) From f5383e3c05169ef905f14af86b62849634a56ac5 Mon Sep 17 00:00:00 2001 From: elweyn Date: Sat, 22 Jan 2022 14:11:54 +0100 Subject: [PATCH 005/577] In case where the user has used an OptIn code that was to old then the user is send to a thx/resetFailed page where he gets a message that the code was to old. --- frontend/src/locales/de.json | 1 + frontend/src/locales/en.json | 3 ++- frontend/src/views/Pages/ResetPassword.vue | 2 +- frontend/src/views/Pages/thx.vue | 6 ++++++ 4 files changed, 10 insertions(+), 2 deletions(-) diff --git a/frontend/src/locales/de.json b/frontend/src/locales/de.json index 7ca877c08..840cde454 100644 --- a/frontend/src/locales/de.json +++ b/frontend/src/locales/de.json @@ -204,6 +204,7 @@ "errorTitle": "Achtung!", "register": "Du bist jetzt registriert, bitte überprüfe deine Emails und klicke auf den Aktivierungslink.", "reset": "Dein Passwort wurde geändert.", + "resetPassword": "Den Code den Du genutzt hast ist zu alt bitte fordere ein neuen über die Passwort Reset Seite an.", "title": "Danke!" } }, diff --git a/frontend/src/locales/en.json b/frontend/src/locales/en.json index c6cbeed69..8cb2a609a 100644 --- a/frontend/src/locales/en.json +++ b/frontend/src/locales/en.json @@ -197,13 +197,14 @@ "uppercase": "One uppercase letter required." }, "thx": { - "activateEmail": "Your account has not been activated yet, please check your emails and click the activation link!", + "activateEmail": "Your account has not been activated yet, please check your emails and click the activation link! Or order a new activation link over the password reset page.", "checkEmail": "Your email has been successfully verified.", "email": "We have sent you an email.", "emailActivated": "Thank you your email has been activated.", "errorTitle": "Attention!", "register": "You are registered now, please check your emails and click the activation link.", "reset": "Your password has been changed.", + "resetPassword": "The code you used was to old please order a new on over the password reset page.", "title": "Thank you!" } }, diff --git a/frontend/src/views/Pages/ResetPassword.vue b/frontend/src/views/Pages/ResetPassword.vue index c933e4032..2e171936a 100644 --- a/frontend/src/views/Pages/ResetPassword.vue +++ b/frontend/src/views/Pages/ResetPassword.vue @@ -97,7 +97,7 @@ export default { .catch((error) => { this.$toasted.global.error(error.message) if (error.message.includes('Code is older than 10 minutes')) { - this.$router.push('/thx/login') + this.$router.push('/thx/resetFailed') } }) }, diff --git a/frontend/src/views/Pages/thx.vue b/frontend/src/views/Pages/thx.vue index 605b88ca1..29896108d 100644 --- a/frontend/src/views/Pages/thx.vue +++ b/frontend/src/views/Pages/thx.vue @@ -48,6 +48,12 @@ const textFields = { button: 'settings.password.reset', linkTo: '/password', }, + resetFailed: { + headline: 'site.thx.errorTitle', + subtitle: 'site.thx.resetPassword', + button: 'settings.password.reset', + linkTo: '/password', + }, } export default { From 2211c7cb28498e9339c34d34b3e01ae0570d0027 Mon Sep 17 00:00:00 2001 From: elweyn Date: Sat, 22 Jan 2022 14:14:20 +0100 Subject: [PATCH 006/577] Change of url in the UI needs to be transfered to the test. --- frontend/src/views/Pages/ResetPassword.spec.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/src/views/Pages/ResetPassword.spec.js b/frontend/src/views/Pages/ResetPassword.spec.js index 137a08897..e3a7c81b1 100644 --- a/frontend/src/views/Pages/ResetPassword.spec.js +++ b/frontend/src/views/Pages/ResetPassword.spec.js @@ -146,8 +146,8 @@ describe('ResetPassword', () => { expect(toasterMock).toHaveBeenCalledWith('...Code is older than 10 minutes') }) - it('router pushes to /thx/login', () => { - expect(routerPushMock).toHaveBeenCalledWith('/thx/login') + it('router pushes to /thx/resetFailed', () => { + expect(routerPushMock).toHaveBeenCalledWith('/thx/resetFailed') }) }) From a284e49f0144f584867597e0ca4a605965b634a6 Mon Sep 17 00:00:00 2001 From: elweyn Date: Wed, 26 Jan 2022 14:44:53 +0100 Subject: [PATCH 007/577] Fix locales had a property that was not closed. --- frontend/src/locales/de.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/locales/de.json b/frontend/src/locales/de.json index c071e92af..a97e7a2cc 100644 --- a/frontend/src/locales/de.json +++ b/frontend/src/locales/de.json @@ -198,7 +198,7 @@ }, "thx": { "activateEmail": "Dein Konto wurde noch nicht aktiviert. Bitte überprüfe deine E-Mail und klicke den Aktivierungslink! Oder fordere einen neuen Aktivierungslink über die password reset seite.", - "checkEmail": "Deine E-Mail wurde erfolgreich verifiziert. Du kannst dich jetzt anmelden. + "checkEmail": "Deine E-Mail wurde erfolgreich verifiziert. Du kannst dich jetzt anmelden.", "email": "Wir haben dir eine E-Mail gesendet.", "emailActivated": "Danke dass Du deine E-Mail bestätigt hast.", "errorTitle": "Achtung!", From 0ca8e702d7b343bd2e543753de3ed8def7991ed7 Mon Sep 17 00:00:00 2001 From: elweyn Date: Wed, 26 Jan 2022 14:45:38 +0100 Subject: [PATCH 008/577] Adding default value to the InputEmail component. --- frontend/src/components/Inputs/InputEmail.vue | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/frontend/src/components/Inputs/InputEmail.vue b/frontend/src/components/Inputs/InputEmail.vue index 2aa153486..32cc98e67 100644 --- a/frontend/src/components/Inputs/InputEmail.vue +++ b/frontend/src/components/Inputs/InputEmail.vue @@ -38,10 +38,11 @@ export default { label: { type: String, default: 'Email' }, placeholder: { type: String, default: 'Email' }, value: { required: true, type: String }, + defaultValue: { type: String }, }, data() { return { - currentValue: '', + currentValue: this.defaultValue !== null ? this.defaultValue : '', } }, computed: { From 8b60ba623a3cbed21f35bfaa7e4957c36c16f5c5 Mon Sep 17 00:00:00 2001 From: elweyn Date: Wed, 26 Jan 2022 14:47:21 +0100 Subject: [PATCH 009/577] Storing email in the store in case email not validated and no password set now. Taking email from store on forgotpassword. --- frontend/src/views/Pages/ForgotPassword.vue | 3 ++- frontend/src/views/Pages/Login.vue | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/frontend/src/views/Pages/ForgotPassword.vue b/frontend/src/views/Pages/ForgotPassword.vue index 654711dc7..c53015af7 100644 --- a/frontend/src/views/Pages/ForgotPassword.vue +++ b/frontend/src/views/Pages/ForgotPassword.vue @@ -19,7 +19,7 @@ - +
{{ $t(displaySetup.button) }} @@ -68,6 +68,7 @@ export default { email: '', }, displaySetup: {}, + defaultEmail: this.$store.state.email, } }, methods: { diff --git a/frontend/src/views/Pages/Login.vue b/frontend/src/views/Pages/Login.vue index 4d2b75d2a..5a05fa8a5 100755 --- a/frontend/src/views/Pages/Login.vue +++ b/frontend/src/views/Pages/Login.vue @@ -107,8 +107,10 @@ export default { .catch((error) => { this.$toasted.global.error(this.$t('error.no-account')) if (error.message.includes('User email not validated')) { + this.$store.commit('email', this.form.email) this.$router.push('/thx/login') } else if (error.message.includes('User has no password set yet')) { + this.$store.commit('email', this.form.email) this.$router.push('/reset/login') } loader.hide() From 5f0cf50ccd0f418c157e1926bdd9cdc2ee451d5f Mon Sep 17 00:00:00 2001 From: ogerly Date: Sat, 5 Feb 2022 08:38:17 +0100 Subject: [PATCH 010/577] sorting meta information --- frontend/public/index.html | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/frontend/public/index.html b/frontend/public/index.html index 4aad83f03..de67b2e7f 100644 --- a/frontend/public/index.html +++ b/frontend/public/index.html @@ -1,7 +1,7 @@ From 51deefc19be4511b533044917b2cdeeaa734c6ee Mon Sep 17 00:00:00 2001 From: ogerly Date: Sat, 5 Feb 2022 08:41:36 +0100 Subject: [PATCH 011/577] add meta description and keywords --- frontend/public/index.html | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/frontend/public/index.html b/frontend/public/index.html index de67b2e7f..537fdb3d3 100644 --- a/frontend/public/index.html +++ b/frontend/public/index.html @@ -17,10 +17,10 @@ - Gradido Account - - - + Gradido Wallet + + + From beb6239f712ef99331095d804f169a340d29b7b9 Mon Sep 17 00:00:00 2001 From: ogerly Date: Sat, 5 Feb 2022 08:42:54 +0100 Subject: [PATCH 012/577] add meta authors --- frontend/public/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/public/index.html b/frontend/public/index.html index 537fdb3d3..bc74af638 100644 --- a/frontend/public/index.html +++ b/frontend/public/index.html @@ -20,7 +20,7 @@ Gradido Wallet - + From 3d0451a3b8596a0eb991d11427b05a1312ea89e0 Mon Sep 17 00:00:00 2001 From: ogerly Date: Sat, 5 Feb 2022 08:53:24 +0100 Subject: [PATCH 013/577] localize meta data --- frontend/public/index.html | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/frontend/public/index.html b/frontend/public/index.html index bc74af638..e4b65709d 100644 --- a/frontend/public/index.html +++ b/frontend/public/index.html @@ -18,8 +18,10 @@ Gradido Wallet - - + + + + From bf3e97f1db545595617607e24b8e6659bd73522b Mon Sep 17 00:00:00 2001 From: ogerly Date: Sat, 5 Feb 2022 09:18:16 +0100 Subject: [PATCH 014/577] meta propertys for social network posts --- frontend/public/img/gradido-wallet-650-400.jpg | Bin 0 -> 78114 bytes frontend/public/index.html | 13 +++++++++++++ 2 files changed, 13 insertions(+) create mode 100644 frontend/public/img/gradido-wallet-650-400.jpg diff --git a/frontend/public/img/gradido-wallet-650-400.jpg b/frontend/public/img/gradido-wallet-650-400.jpg new file mode 100644 index 0000000000000000000000000000000000000000..97a86e71000ad236a43980b17d4cbaa60b093569 GIT binary patch literal 78114 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 + + @@ -31,6 +33,17 @@ + + + + + + + + + + +
--> + + + + GDD versenden + + + + + GDD verschenken per Link + + + +
({{ selected }})
+ + +

{{ $t('gdd_per_link.header') }}

+

+ {{ $t('gdd_per_link.sentence_1') }} +

+

+ - + {{ $t('gdd_per_link.sentence_2') }} +

+

+ - + {{ $t('gdd_per_link.sentence_3') }} +

+

+ - + {{ $t('gdd_per_link.sentence_4') }} +

+ +
+

+ {{ $t('gdd_per_link.sentence_5') }} +

+
- {{ $t('form.send_now') }} + {{ selected === 'send' ? $t('form.send_now') : $t('form.generate_now') }} @@ -165,11 +203,28 @@ export default { memo: '', amountValue: 0.0, }, + selected: 'send', } }, methods: { onSubmit() { this.normalizeAmount(true) + switch (this.selected) { + case 'send': + this.$emit('set-transaction', { + email: this.form.email, + amount: this.form.amountValue, + memo: this.form.memo, + }) + break + case 'gift': + this.$emit('set-transaction-per-link', { + selected: this.selected, + amount: this.form.amountValue, + memo: this.form.memo, + }) + break + } this.$emit('set-transaction', { email: this.form.email, amount: this.form.amountValue, From 6cc6c3476a51e6f93e20b5765524ba9352b5d2d6 Mon Sep 17 00:00:00 2001 From: ogerly Date: Tue, 8 Mar 2022 13:22:47 +0100 Subject: [PATCH 071/577] seperate confirm send GDD per link, add function sendTransactionPerLink() --- frontend/src/views/Pages/SendOverview.vue | 28 +++++++-- .../GddSend/TransactionConfirmation.vue | 60 +++++++++++++++++-- .../SendOverview/GddSend/TransactionForm.vue | 43 ++----------- 3 files changed, 82 insertions(+), 49 deletions(-) diff --git a/frontend/src/views/Pages/SendOverview.vue b/frontend/src/views/Pages/SendOverview.vue index adb6e8a25..6ce507f8d 100644 --- a/frontend/src/views/Pages/SendOverview.vue +++ b/frontend/src/views/Pages/SendOverview.vue @@ -9,11 +9,13 @@ @@ -34,7 +36,7 @@ import GddSend from './SendOverview/GddSend.vue' import TransactionForm from './SendOverview/GddSend/TransactionForm.vue' import TransactionConfirmation from './SendOverview/GddSend/TransactionConfirmation.vue' import TransactionResult from './SendOverview/GddSend/TransactionResult.vue' -import { sendCoins } from '../../graphql/mutations.js' +import { sendCoins, sendCoinsPerLink } from '../../graphql/mutations.js' const EMPTY_TRANSACTION_DATA = { email: '', @@ -76,10 +78,6 @@ export default { this.transactionData = { ...data } this.currentTransactionStep = 1 }, - setTransactionPerLink(data) { - this.transactionData = { ...data } - this.currentTransactionStep = 1 - }, async sendTransaction() { this.loading = true this.error = false @@ -99,6 +97,26 @@ export default { this.currentTransactionStep = 2 this.loading = false }, + async sendTransactionPerLink() { + alert('sendTransactionPerLink: TODO : lege sendCoinsPerLink als mutation an!') + this.loading = true + this.error = false + this.$apollo + .mutate({ + mutation: sendCoinsPerLink, + variables: this.transactionData, + }) + .then(() => { + this.error = false + this.$emit('update-balance', this.transactionData.amount) + }) + .catch((err) => { + this.errorResult = err.message + this.error = true + }) + this.currentTransactionStep = 2 + this.loading = false + }, onReset() { this.currentTransactionStep = 0 }, diff --git a/frontend/src/views/Pages/SendOverview/GddSend/TransactionConfirmation.vue b/frontend/src/views/Pages/SendOverview/GddSend/TransactionConfirmation.vue index 4acb95dcd..aa3b067e2 100644 --- a/frontend/src/views/Pages/SendOverview/GddSend/TransactionConfirmation.vue +++ b/frontend/src/views/Pages/SendOverview/GddSend/TransactionConfirmation.vue @@ -1,6 +1,16 @@ From a4c2ff33091696fd6aff6e86d39afa02e26f4062 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Tue, 8 Mar 2022 07:35:34 +0100 Subject: [PATCH 092/577] remove unnecesesary divs --- .../DecayInformation-DecayStartblock.vue | 16 ++++------------ .../DecayInformations/DecayInformation-Long.vue | 16 ++++------------ 2 files changed, 8 insertions(+), 24 deletions(-) diff --git a/frontend/src/components/DecayInformations/DecayInformation-DecayStartblock.vue b/frontend/src/components/DecayInformations/DecayInformation-DecayStartblock.vue index 9bde154ae..6f7e3f466 100644 --- a/frontend/src/components/DecayInformations/DecayInformation-DecayStartblock.vue +++ b/frontend/src/components/DecayInformations/DecayInformation-DecayStartblock.vue @@ -33,24 +33,16 @@ {{ $t(`decay.${typeId.toLowerCase()}`) }} - -
{{ amount | GDD }}
-
+ {{ amount | GDD }}
- -
{{ $t('decay.decay') }}
-
- -
{{ decay.decay | GDD }}
-
+ {{ $t('decay.decay') }} + {{ decay.decay | GDD }}
- -
{{ $t('decay.total') }}
-
+ {{ $t('decay.total') }} {{ (Number(amount) + Number(decay.decay)) | GDD }} diff --git a/frontend/src/components/DecayInformations/DecayInformation-Long.vue b/frontend/src/components/DecayInformations/DecayInformation-Long.vue index fad50ddab..6a0b6a1c1 100644 --- a/frontend/src/components/DecayInformations/DecayInformation-Long.vue +++ b/frontend/src/components/DecayInformations/DecayInformation-Long.vue @@ -34,9 +34,7 @@
{{ $t('decay.decay') }}
- -
{{ decay.decay | GDD }}
-
+ {{ decay.decay | GDD }}

@@ -47,18 +45,12 @@ {{ $t(`decay.${typeId.toLowerCase()}`) }} - -
{{ amount | GDD }}
-
+ {{ amount | GDD }}
- -
{{ $t('decay.decay') }}
-
- -
{{ decay.decay | GDD }}
-
+ {{ $t('decay.decay') }} + {{ decay.decay | GDD }}
From 5fb81a629c6e5211dd91d8eb372c364e1bbec163 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Tue, 8 Mar 2022 07:37:28 +0100 Subject: [PATCH 093/577] less divs --- .../DecayInformation-DecayStartblock.vue | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/frontend/src/components/DecayInformations/DecayInformation-DecayStartblock.vue b/frontend/src/components/DecayInformations/DecayInformation-DecayStartblock.vue index 6f7e3f466..2ee9ecc2c 100644 --- a/frontend/src/components/DecayInformations/DecayInformation-DecayStartblock.vue +++ b/frontend/src/components/DecayInformations/DecayInformation-DecayStartblock.vue @@ -17,12 +17,8 @@ - -
{{ $t('decay.decay') }}
-
- -
{{ decay.decay | GDD }}
-
+ {{ $t('decay.decay') }} + {{ decay.decay | GDD }}

From ddaa1634a095c14c4a6fa54fd0a3dd1eed05c8ab Mon Sep 17 00:00:00 2001 From: ogerly Date: Wed, 9 Mar 2022 11:29:06 +0100 Subject: [PATCH 094/577] change i18n locales to en, change test date contain without text --- frontend/src/components/GddTransactionList.spec.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/frontend/src/components/GddTransactionList.spec.js b/frontend/src/components/GddTransactionList.spec.js index fd94760b2..b4d61c4a6 100644 --- a/frontend/src/components/GddTransactionList.spec.js +++ b/frontend/src/components/GddTransactionList.spec.js @@ -19,7 +19,7 @@ describe('GddTransactionList', () => { $t: jest.fn((t) => t), $d: jest.fn((d) => d), $i18n: { - locale: () => 'de', + locale: () => 'en', }, } @@ -256,7 +256,7 @@ describe('GddTransactionList', () => { it('shows the date of the transaction', () => { expect(transaction.findAll('.gdd-transaction-list-item-date').at(0).text()).toContain( - 'Mon Feb 28 2022 13:55:47', + 'Mon Feb 28 2022 13:55:47 GMT+0000', ) }) @@ -321,7 +321,7 @@ describe('GddTransactionList', () => { it('shows the date of the transaction', () => { expect(transaction.findAll('.gdd-transaction-list-item-date').at(0).text()).toContain( - 'Fri Feb 25 2022 07:29:26', + 'Fri Feb 25 2022 07:29:26 GMT+0000', ) }) }) @@ -383,7 +383,7 @@ describe('GddTransactionList', () => { it('shows the date of the transaction', () => { expect(transaction.findAll('.gdd-transaction-list-item-date').at(0).text()).toContain( - 'Wed Feb 23 2022 10:55:30', + 'Wed Feb 23 2022 10:55:30 GMT+0000', ) }) From 5f5bde2f0f336cc43fef7da40b31861583e4bfd1 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Wed, 9 Mar 2022 11:38:24 +0100 Subject: [PATCH 095/577] migration to create transaction_links table --- database/migrations/0030-transaction_link.ts | 25 ++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 database/migrations/0030-transaction_link.ts diff --git a/database/migrations/0030-transaction_link.ts b/database/migrations/0030-transaction_link.ts new file mode 100644 index 000000000..ca0f0cfa5 --- /dev/null +++ b/database/migrations/0030-transaction_link.ts @@ -0,0 +1,25 @@ +/* MIGRATION TO CREATE TRANSACTION_LINK TABLE */ + +/* eslint-disable @typescript-eslint/explicit-module-boundary-types */ +/* eslint-disable @typescript-eslint/no-explicit-any */ + +export async function upgrade(queryFn: (query: string, values?: any[]) => Promise>) { + await queryFn(` + CREATE TABLE \`transaction_links\` ( + \`id\` int UNSIGNED NOT NULL AUTO_INCREMENT, + \`userId\` int UNSIGNED NOT NULL, + \`amount\` DECIMAL(40,20) NOT NULL, + \`memo\` varchar(255) NOT NULL, + \`createdAt\` datetime NOT NULL, + \`validUntil\` datetime NOT NULL, + \`showEmail\` boolean NOT NULL DEFAULT false, + \`redeemedAt\` datetime, + \`redeemedBy\` int UNSIGNED, + PRIMARY KEY (\`id\`) + ) ENGINE = InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + `) +} + +export async function downgrade(queryFn: (query: string, values?: any[]) => Promise>) { + await queryFn(`DROP TABLE \`transaction_links\`;`) +} From 67506c0ed64307b2cff277f9f7ba201e4de986ae Mon Sep 17 00:00:00 2001 From: ogerly Date: Wed, 9 Mar 2022 11:44:50 +0100 Subject: [PATCH 096/577] add style in App.vue, set class .pointer on transaction-list-item --- frontend/src/App.vue | 5 +++++ frontend/src/components/GddTransactionList.vue | 2 +- frontend/src/components/Transactions/TransactionCreation.vue | 2 +- frontend/src/components/Transactions/TransactionDecay.vue | 2 +- frontend/src/components/Transactions/TransactionReceive.vue | 2 +- frontend/src/components/Transactions/TransactionSend.vue | 2 +- 6 files changed, 10 insertions(+), 5 deletions(-) diff --git a/frontend/src/App.vue b/frontend/src/App.vue index 39e417404..d7945ec69 100755 --- a/frontend/src/App.vue +++ b/frontend/src/App.vue @@ -40,3 +40,8 @@ export default { }, } + diff --git a/frontend/src/components/GddTransactionList.vue b/frontend/src/components/GddTransactionList.vue index c48d8a88e..c3f3d4d7e 100644 --- a/frontend/src/components/GddTransactionList.vue +++ b/frontend/src/components/GddTransactionList.vue @@ -13,7 +13,7 @@
- + diff --git a/frontend/src/components/Transactions/TransactionCreation.vue b/frontend/src/components/Transactions/TransactionCreation.vue index 70cbc53cd..362299900 100644 --- a/frontend/src/components/Transactions/TransactionCreation.vue +++ b/frontend/src/components/Transactions/TransactionCreation.vue @@ -1,5 +1,5 @@
From 01faed7e307e001bcb1fbb00c3a2d311f5452776 Mon Sep 17 00:00:00 2001 From: ogerly Date: Sat, 5 Feb 2022 09:21:07 +0100 Subject: [PATCH 015/577] add meta url and identifier-url --- frontend/public/index.html | 2 ++ 1 file changed, 2 insertions(+) diff --git a/frontend/public/index.html b/frontend/public/index.html index db8df0318..f3f7e840f 100644 --- a/frontend/public/index.html +++ b/frontend/public/index.html @@ -23,6 +23,8 @@ + + From 56d4caf278bbe37849d4bdeffa2156f791131be7 Mon Sep 17 00:00:00 2001 From: Alexander Friedland Date: Mon, 7 Feb 2022 12:27:00 +0100 Subject: [PATCH 016/577] Update frontend/public/index.html Co-authored-by: Ulf Gebhardt --- frontend/public/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/public/index.html b/frontend/public/index.html index f3f7e840f..bba525101 100644 --- a/frontend/public/index.html +++ b/frontend/public/index.html @@ -21,7 +21,7 @@ - + From b3909391affac1d7e0801689933f6725594e2e68 Mon Sep 17 00:00:00 2001 From: Alexander Friedland Date: Mon, 7 Feb 2022 12:27:09 +0100 Subject: [PATCH 017/577] Update frontend/public/index.html Co-authored-by: Ulf Gebhardt --- frontend/public/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/public/index.html b/frontend/public/index.html index bba525101..eb8839b5a 100644 --- a/frontend/public/index.html +++ b/frontend/public/index.html @@ -26,7 +26,7 @@ - + From 99e20fce583a2c60ed7d1072d6277422b2458b3f Mon Sep 17 00:00:00 2001 From: Alexander Friedland Date: Mon, 7 Feb 2022 12:27:17 +0100 Subject: [PATCH 018/577] Update frontend/public/index.html Co-authored-by: Ulf Gebhardt --- frontend/public/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/public/index.html b/frontend/public/index.html index eb8839b5a..b37645aa3 100644 --- a/frontend/public/index.html +++ b/frontend/public/index.html @@ -20,7 +20,7 @@ Gradido Wallet - + From 4b805dafbf8ea35ab14d516aa64d9f540d97513c Mon Sep 17 00:00:00 2001 From: Alexander Friedland Date: Mon, 7 Feb 2022 12:27:24 +0100 Subject: [PATCH 019/577] Update frontend/public/index.html Co-authored-by: Ulf Gebhardt --- frontend/public/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/public/index.html b/frontend/public/index.html index b37645aa3..4c7e79e8e 100644 --- a/frontend/public/index.html +++ b/frontend/public/index.html @@ -19,7 +19,7 @@ Gradido Wallet - + From 649c68c496703c2dff5cd82ffdad9a192421d023 Mon Sep 17 00:00:00 2001 From: Alexander Friedland Date: Mon, 7 Feb 2022 15:46:06 +0100 Subject: [PATCH 020/577] Update frontend/public/index.html Co-authored-by: Hannes Heine --- frontend/public/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/public/index.html b/frontend/public/index.html index 4c7e79e8e..adf39f6d9 100644 --- a/frontend/public/index.html +++ b/frontend/public/index.html @@ -23,7 +23,7 @@ - + From 55c49f0df19922ff9e1d145ccd7a352fd58a44ca Mon Sep 17 00:00:00 2001 From: Alexander Friedland Date: Tue, 15 Feb 2022 09:25:36 +0100 Subject: [PATCH 021/577] Update frontend/public/index.html Co-authored-by: Moriz Wahl --- frontend/public/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/public/index.html b/frontend/public/index.html index adf39f6d9..214d3a6d4 100644 --- a/frontend/public/index.html +++ b/frontend/public/index.html @@ -18,7 +18,7 @@ Gradido Wallet - + From 513106eeed3941820dde0a2fbec12524ca709a02 Mon Sep 17 00:00:00 2001 From: Alexander Friedland Date: Tue, 15 Feb 2022 09:25:43 +0100 Subject: [PATCH 022/577] Update frontend/public/index.html Co-authored-by: Moriz Wahl --- frontend/public/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/public/index.html b/frontend/public/index.html index 214d3a6d4..e1caa5e24 100644 --- a/frontend/public/index.html +++ b/frontend/public/index.html @@ -21,7 +21,7 @@ - + From 7966449fee8d22c9c221ee9726e7d904e805cdc6 Mon Sep 17 00:00:00 2001 From: Alexander Friedland Date: Tue, 15 Feb 2022 09:25:52 +0100 Subject: [PATCH 023/577] Update frontend/public/index.html Co-authored-by: Moriz Wahl --- frontend/public/index.html | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/frontend/public/index.html b/frontend/public/index.html index e1caa5e24..fcee8e191 100644 --- a/frontend/public/index.html +++ b/frontend/public/index.html @@ -42,7 +42,8 @@ - + + From c69d1cc205c1f34b9b61870fd0e986394c5aba94 Mon Sep 17 00:00:00 2001 From: Alexander Friedland Date: Tue, 15 Feb 2022 09:27:01 +0100 Subject: [PATCH 024/577] Update frontend/public/index.html Co-authored-by: Moriz Wahl --- frontend/public/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/public/index.html b/frontend/public/index.html index fcee8e191..ff2507cee 100644 --- a/frontend/public/index.html +++ b/frontend/public/index.html @@ -20,7 +20,7 @@ Gradido Wallet - + From 1001819e147b26c76919b923a163b5750e60a5fd Mon Sep 17 00:00:00 2001 From: Alexander Friedland Date: Tue, 15 Feb 2022 09:27:11 +0100 Subject: [PATCH 025/577] Update frontend/public/index.html Co-authored-by: Moriz Wahl --- frontend/public/index.html | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/frontend/public/index.html b/frontend/public/index.html index ff2507cee..62bb86992 100644 --- a/frontend/public/index.html +++ b/frontend/public/index.html @@ -41,7 +41,8 @@ - + + From 107b486050f705b81fe28e0804e5590e5c0425bc Mon Sep 17 00:00:00 2001 From: Alexander Friedland Date: Tue, 15 Feb 2022 09:27:29 +0100 Subject: [PATCH 026/577] Update frontend/public/index.html Co-authored-by: Moriz Wahl --- frontend/public/index.html | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/frontend/public/index.html b/frontend/public/index.html index 62bb86992..7b78bfeae 100644 --- a/frontend/public/index.html +++ b/frontend/public/index.html @@ -17,7 +17,8 @@ - Gradido Wallet + Gradido – Dein Dankbarkeitskonto + Gradido - Your gratitude account From e632ddea2dc17353f30f0ebf259dd2fd5d460b0b Mon Sep 17 00:00:00 2001 From: Alexander Friedland Date: Tue, 15 Feb 2022 09:35:59 +0100 Subject: [PATCH 027/577] Update frontend/public/index.html Co-authored-by: Moriz Wahl --- frontend/public/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/public/index.html b/frontend/public/index.html index 7b78bfeae..2f255a1a8 100644 --- a/frontend/public/index.html +++ b/frontend/public/index.html @@ -20,7 +20,7 @@ Gradido – Dein Dankbarkeitskonto Gradido - Your gratitude account - + From 073a42d968fc507bed85f7e805ecb892388cc3f1 Mon Sep 17 00:00:00 2001 From: ogerly Date: Wed, 16 Feb 2022 12:42:35 +0100 Subject: [PATCH 028/577] add vue-html-webpack-plugin package --- frontend/package.json | 1 + frontend/public/index.html | 20 +++++++++++--------- frontend/vue.config.js | 18 ++++++++++++++++++ frontend/yarn.lock | 13 +++++++++++++ 4 files changed, 43 insertions(+), 9 deletions(-) diff --git a/frontend/package.json b/frontend/package.json index 8c7577ab3..1873e8ccd 100755 --- a/frontend/package.json +++ b/frontend/package.json @@ -78,6 +78,7 @@ "node-sass": "^6.0.1", "sass-loader": "^10", "stats-webpack-plugin": "^0.7.0", + "vue-html-webpack-plugin": "^3.2.2", "vue-template-compiler": "^2.6.11", "webpack-bundle-analyzer": "^4.5.0" }, diff --git a/frontend/public/index.html b/frontend/public/index.html index 2f255a1a8..ca076c334 100644 --- a/frontend/public/index.html +++ b/frontend/public/index.html @@ -17,19 +17,21 @@ - Gradido – Dein Dankbarkeitskonto + <%= htmlWebpackPlugin.options.title %> + + + + + + + + - + diff --git a/frontend/vue.config.js b/frontend/vue.config.js index 47b016aea..14dbdd5a4 100644 --- a/frontend/vue.config.js +++ b/frontend/vue.config.js @@ -2,6 +2,7 @@ const path = require('path') const webpack = require('webpack') const Dotenv = require('dotenv-webpack') const StatsPlugin = require('stats-webpack-plugin') +const HtmlWebpackPlugin = require('vue-html-webpack-plugin') // vue.config.js module.exports = { @@ -38,6 +39,23 @@ module.exports = { }), // generate webpack stats to allow analysis of the bundlesize new StatsPlugin('webpack.stats.json'), + new HtmlWebpackPlugin({ + vue: true, + title: 'XGRADIDO', + template: 'public/index.html', + description_de: + 'Dankbarkeit ist die Währung der neuen Zeit. Immer mehr Menschen entfalten ihr Potenzial und gestalten eine gute Zukunft für alle.', + description_en: + 'Gratitude is the currency of the new age. More and more people are unleashing their potential and shaping a good future for all.', + keywords_de: + 'Grundeinkommen, Währung, Dankbarkeit, Schenk-Ökonomie, Natürliche Ökonomie des Lebens, Ökonomie, Ökologie, Potenzialentfaltung, Schenken und Danken, Kreislauf des Lebens, Geldsystem', + keywords_en: + 'Basic Income, Currency, Gratitude, Gift Economy, Natural Economy of Life, Economy, Ecology, Potential Development, Giving and Thanking, Cycle of Life, Monetary System', + author: 'Bernd Hückstädt - Gradido-Akademie', + url: 'http://localhost', + identifier_URL: 'http://localhost', + icon: './favicon.png', + }), ], infrastructureLogging: { level: 'warn', // 'none' | 'error' | 'warn' | 'info' | 'log' | 'verbose' diff --git a/frontend/yarn.lock b/frontend/yarn.lock index 296e0f01b..a452828a4 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -14158,6 +14158,19 @@ vue-hot-reload-api@^2.3.0: resolved "https://registry.yarnpkg.com/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz#532955cc1eb208a3d990b3a9f9a70574657e08f2" integrity sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog== +vue-html-webpack-plugin@^3.2.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/vue-html-webpack-plugin/-/vue-html-webpack-plugin-3.2.2.tgz#df1499f05bcdf22c2e7040fa760fb0f5de66beea" + integrity sha512-C1qz9hxxrzvPSkpr59GHY8oh0U6TUuKYkhRg47pcYoq8D7JQKDGON8xsI6LYudVKGowcPj8GulfdHsp0Cc1gJA== + dependencies: + html-minifier "^3.2.3" + loader-utils "^0.2.16" + lodash "^4.17.3" + pretty-error "^2.0.2" + tapable "^1.0.0" + toposort "^1.0.0" + util.promisify "1.0.0" + vue-i18n-extract@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/vue-i18n-extract/-/vue-i18n-extract-1.0.2.tgz#0a136e12d1634d6799e187aad81a7003d02f67a5" From 6134d5010cd0e4d43be3ee05eda4ce717038d4ae Mon Sep 17 00:00:00 2001 From: ogerly Date: Wed, 16 Feb 2022 16:59:04 +0100 Subject: [PATCH 029/577] add META* .env, add META* .env.dist, add META .env.template, refactor config/index.js and vue.config --- frontend/.env.dist | 8 +++++++ frontend/.env.template | 8 +++++++ frontend/public/index.html | 41 ++++++++++++++++++------------------ frontend/src/config/index.js | 19 +++++++++++++++++ frontend/vue.config.js | 23 +++++++++----------- 5 files changed, 65 insertions(+), 34 deletions(-) diff --git a/frontend/.env.dist b/frontend/.env.dist index f7bda826a..0de8c6252 100644 --- a/frontend/.env.dist +++ b/frontend/.env.dist @@ -1,3 +1,11 @@ +META_URL=http://localhost +META_TITLE_DE="Gradido – Dein Dankbarkeitskonto" +META_TITLE_EN="Gradido - Your gratitude account" +META_DESCRIPTION_DE="Dankbarkeit ist die Währung der neuen Zeit. Immer mehr Menschen entfalten ihr Potenzial und gestalten eine gute Zukunft für alle." +META_DESCRIPTION_EN="Gratitude is the currency of the new age. More and more people are unleashing their potential and shaping a good future for all." +META_KEYWORDS_DE="Grundeinkommen, Währung, Dankbarkeit, Schenk-Ökonomie, Natürliche Ökonomie des Lebens, Ökonomie, Ökologie, Potenzialentfaltung, Schenken und Danken, Kreislauf des Lebens, Geldsystem" +META_KEYWORDS_EN="Basic Income, Currency, Gratitude, Gift Economy, Natural Economy of Life, Economy, Ecology, Potential Development, Giving and Thanking, Cycle of Life, Monetary System" +META_AUTHOR="Bernd Hückstädt - Gradido-Akademie" GRAPHQL_URI=http://localhost/graphql DEFAULT_PUBLISHER_ID=2896 ADMIN_AUTH_URL=http://localhost/admin/authenticate?token={token} \ No newline at end of file diff --git a/frontend/.env.template b/frontend/.env.template index 8c9c053cc..1eef43cef 100644 --- a/frontend/.env.template +++ b/frontend/.env.template @@ -1,3 +1,11 @@ +META_URL=$META_URL +META_TITLE_DE=$META_TITLE_DE +META_TITLE_EN=$META_TITLE_EN +META_DESCRIPTION_DE=$META_DESCRIPTION_DE +META_DESCRIPTION_EN=$META_DESCRIPTION_EN +META_KEYWORDS_DE=$META_KEYWORDS_DE +META_KEYWORDS_EN=$META_KEYWORDS_EN +META_AUTHOR=$META_AUTHOR GRAPHQL_URI=$GRAPHQL_URI DEFAULT_PUBLISHER_ID=2896 ADMIN_AUTH_URL=$ADMIN_AUTH_URL \ No newline at end of file diff --git a/frontend/public/index.html b/frontend/public/index.html index ca076c334..a15b46916 100644 --- a/frontend/public/index.html +++ b/frontend/public/index.html @@ -17,20 +17,18 @@ - <%= htmlWebpackPlugin.options.title %> - - - - - - - - + + + + + + + + + - + @@ -39,16 +37,17 @@ - - - - + + + + + - - - - - + + + + + diff --git a/frontend/src/config/index.js b/frontend/src/config/index.js index 7e213e1d9..eaa1e7f3d 100644 --- a/frontend/src/config/index.js +++ b/frontend/src/config/index.js @@ -18,6 +18,25 @@ const environment = { DEFAULT_PUBLISHER_ID: process.env.DEFAULT_PUBLISHER_ID || 2896, } +// const meta = { +// META_URL: process.env.META_URL || 'http://localhost', +// META_TITLE_DE: process.env.META_TITLE_DE || 'Gradido – Dein Dankbarkeitskonto', +// META_TITLE_EN: process.env.META_TITLE_EN || 'Gradido - Your gratitude account', +// META_DESCRIPTION_DE: +// process.env.META_DESCRIPTION_DE || +// 'Dankbarkeit ist die Währung der neuen Zeit. Immer mehr Menschen entfalten ihr Potenzial und gestalten eine gute Zukunft für alle.', +// META_DESCRIPTION_EN: +// process.env.META_DESCRIPTION_EN || +// 'Gratitude is the currency of the new age. More and more people are unleashing their potential and shaping a good future for all.', +// META_KEYWORDS_DE: +// process.env.META_KEYWORDS_DE || +// 'Grundeinkommen, Währung, Dankbarkeit, Schenk-Ökonomie, Natürliche Ökonomie des Lebens, Ökonomie, Ökologie, Potenzialentfaltung, Schenken und Danken, Kreislauf des Lebens, Geldsystem', +// META_KEYWORDS_EN: +// process.env.META_KEYWORDS_EN || +// 'Basic Income, Currency, Gratitude, Gift Economy, Natural Economy of Life, Economy, Ecology, Potential Development, Giving and Thanking, Cycle of Life, Monetary System', +// META_AUTHOR: process.env.META_AUTHOR || 'Bernd Hückstädt - Gradido-Akademie', +// } + const endpoints = { GRAPHQL_URI: process.env.GRAPHQL_URI || 'http://localhost/graphql', ADMIN_AUTH_URL: process.env.ADMIN_AUTH_URL || 'http://localhost/admin/authenticate?token={token}', diff --git a/frontend/vue.config.js b/frontend/vue.config.js index 14dbdd5a4..133f90846 100644 --- a/frontend/vue.config.js +++ b/frontend/vue.config.js @@ -41,20 +41,17 @@ module.exports = { new StatsPlugin('webpack.stats.json'), new HtmlWebpackPlugin({ vue: true, - title: 'XGRADIDO', template: 'public/index.html', - description_de: - 'Dankbarkeit ist die Währung der neuen Zeit. Immer mehr Menschen entfalten ihr Potenzial und gestalten eine gute Zukunft für alle.', - description_en: - 'Gratitude is the currency of the new age. More and more people are unleashing their potential and shaping a good future for all.', - keywords_de: - 'Grundeinkommen, Währung, Dankbarkeit, Schenk-Ökonomie, Natürliche Ökonomie des Lebens, Ökonomie, Ökologie, Potenzialentfaltung, Schenken und Danken, Kreislauf des Lebens, Geldsystem', - keywords_en: - 'Basic Income, Currency, Gratitude, Gift Economy, Natural Economy of Life, Economy, Ecology, Potential Development, Giving and Thanking, Cycle of Life, Monetary System', - author: 'Bernd Hückstädt - Gradido-Akademie', - url: 'http://localhost', - identifier_URL: 'http://localhost', - icon: './favicon.png', + meta: { + title_de: process.env.META_TITLE_DE, + title_en: process.env.META_TITLE_EN, + description_de: process.env.META_DESCRIPTION_DE, + description_en: process.env.META_DESCRIPTION_EN, + keywords_de: process.env.META_KEYWORDS_DE, + keywords_en: process.env.META_KEYWORDS_EN, + author: process.env.META_AUTHOR, + url: process.env.META_URL, + }, }), ], infrastructureLogging: { From 02abdba19deff2c52c02a7957eb8dde72f83cdb9 Mon Sep 17 00:00:00 2001 From: ogerly Date: Wed, 16 Feb 2022 17:00:54 +0100 Subject: [PATCH 030/577] add META deployment .env.dist --- deployment/bare_metal/.env.dist | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/deployment/bare_metal/.env.dist b/deployment/bare_metal/.env.dist index 91e37b594..9a9d57b4c 100644 --- a/deployment/bare_metal/.env.dist +++ b/deployment/bare_metal/.env.dist @@ -47,6 +47,15 @@ KLICKTIPP_APIKEY_EN= GRAPHQL_URI=https://stage1.gradido.net/graphql ADMIN_AUTH_URL=https://stage1.gradido.net/admin/authenticate?token={token} +META_URL=http://localhost +META_TITLE_DE="Gradido – Dein Dankbarkeitskonto" +META_TITLE_EN="Gradido - Your gratitude account" +META_DESCRIPTION_DE="Dankbarkeit ist die Währung der neuen Zeit. Immer mehr Menschen entfalten ihr Potenzial und gestalten eine gute Zukunft für alle." +META_DESCRIPTION_EN="Gratitude is the currency of the new age. More and more people are unleashing their potential and shaping a good future for all." +META_KEYWORDS_DE="Grundeinkommen, Währung, Dankbarkeit, Schenk-Ökonomie, Natürliche Ökonomie des Lebens, Ökonomie, Ökologie, Potenzialentfaltung, Schenken und Danken, Kreislauf des Lebens, Geldsystem" +META_KEYWORDS_EN="Basic Income, Currency, Gratitude, Gift Economy, Natural Economy of Life, Economy, Ecology, Potential Development, Giving and Thanking, Cycle of Life, Monetary System" +META_AUTHOR="Bernd Hückstädt - Gradido-Akademie" + # admin WALLET_AUTH_URL=https://stage1.gradido.net/authenticate?token={token} WALLET_URL=https://stage1.gradido.net/login \ No newline at end of file From b2ee61d78899d49f35c505109813f9b620dfd523 Mon Sep 17 00:00:00 2001 From: ogerly Date: Wed, 16 Feb 2022 18:19:04 +0100 Subject: [PATCH 031/577] change preview picture seo --- .../public/img/gradido-wallet-650-400.jpg | Bin 78114 -> 72745 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/frontend/public/img/gradido-wallet-650-400.jpg b/frontend/public/img/gradido-wallet-650-400.jpg index 97a86e71000ad236a43980b17d4cbaa60b093569..b851460a253b592159584e2b5ccbe68a0a758260 100644 GIT binary patch delta 63654 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

lD>7dvcHepxwbx9Lsl&I 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 delta 69457 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 Date: Thu, 24 Feb 2022 14:09:58 +0100 Subject: [PATCH 032/577] helper function to call seeds --- database/src/helpers.ts | 16 +++++++++++++++- database/src/index.ts | 27 +++++++++++---------------- 2 files changed, 26 insertions(+), 17 deletions(-) diff --git a/database/src/helpers.ts b/database/src/helpers.ts index 710094548..acd0e6ccd 100644 --- a/database/src/helpers.ts +++ b/database/src/helpers.ts @@ -1,5 +1,6 @@ import CONFIG from './config' import { createPool, PoolConfig } from 'mysql' +import { useSeeding, runSeeder } from 'typeorm-seeding' import { Migration } from 'ts-mysql-migrate' import path from 'path' @@ -31,4 +32,17 @@ const resetDB = async (closePool = false): Promise => { if (closePool) pool.end() } -export { resetDB, pool, migration, initialize } +/* eslint-disable-next-line @typescript-eslint/no-explicit-any */ +const runSeeds = async (seeds: any[]): Promise => { + if (seeds.length > 0) { + await useSeeding({ + root: process.cwd(), + configName: 'ormconfig.js', + }) + for (let i = 0; i < seeds.length; i++) { + await runSeeder(seeds[i]) + } + } +} + +export { resetDB, pool, migration, initialize, runSeeds } diff --git a/database/src/index.ts b/database/src/index.ts index 6e99ac582..40c5913e4 100644 --- a/database/src/index.ts +++ b/database/src/index.ts @@ -1,7 +1,6 @@ import 'reflect-metadata' import prepare from './prepare' import connection from './typeorm/connection' -import { useSeeding, runSeeder } from 'typeorm-seeding' import { CreatePeterLustigSeed } from './seeds/users/peter-lustig.admin.seed' import { CreateBibiBloxbergSeed } from './seeds/users/bibi-bloxberg.seed' import { CreateRaeuberHotzenplotzSeed } from './seeds/users/raeuber-hotzenplotz.seed' @@ -9,7 +8,7 @@ import { CreateBobBaumeisterSeed } from './seeds/users/bob-baumeister.seed' import { CreateStephenHawkingSeed } from './seeds/users/stephen-hawking.seed' import { CreateGarrickOllivanderSeed } from './seeds/users/garrick-ollivander.seed' import { CreateUserSeed } from './seeds/create-user.seed' -import { resetDB, pool, migration } from './helpers' +import { resetDB, pool, migration, runSeeds } from './helpers' const run = async (command: string) => { // Database actions not supported by our migration library @@ -37,20 +36,16 @@ const run = async (command: string) => { break case 'seed': // TODO protect from production - await useSeeding({ - root: process.cwd(), - configName: 'ormconfig.js', - }) - await runSeeder(CreatePeterLustigSeed) - await runSeeder(CreateBibiBloxbergSeed) - await runSeeder(CreateRaeuberHotzenplotzSeed) - await runSeeder(CreateBobBaumeisterSeed) - await runSeeder(CreateStephenHawkingSeed) - // eslint-disable-next-line prefer-spread - Array.apply(null, Array(96)).forEach(async () => { - await runSeeder(CreateUserSeed) - }) - await runSeeder(CreateGarrickOllivanderSeed) + // await runSeeder(CreatePeterLustigSeed) + await runSeeds([ + CreatePeterLustigSeed, + CreateBibiBloxbergSeed, + CreateRaeuberHotzenplotzSeed, + CreateBobBaumeisterSeed, + CreateStephenHawkingSeed, + CreateGarrickOllivanderSeed, + ...Array(96).fill(CreateUserSeed), + ]) break default: throw new Error(`Unsupported command ${command}`) From e60fc4e164da48fd6d99b8a97d5dafd09279ae3f Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Thu, 24 Feb 2022 20:05:54 +0100 Subject: [PATCH 033/577] test login --- .../src/graphql/resolver/UserResolver.test.ts | 128 ++++++++++++++++-- backend/test/graphql.ts | 25 ++++ backend/test/helpers.ts | 46 +++++++ 3 files changed, 185 insertions(+), 14 deletions(-) create mode 100644 backend/test/graphql.ts create mode 100644 backend/test/helpers.ts diff --git a/backend/src/graphql/resolver/UserResolver.test.ts b/backend/src/graphql/resolver/UserResolver.test.ts index b01c99552..d40648c83 100644 --- a/backend/src/graphql/resolver/UserResolver.test.ts +++ b/backend/src/graphql/resolver/UserResolver.test.ts @@ -1,11 +1,10 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ /* eslint-disable @typescript-eslint/explicit-module-boundary-types */ -import { createTestClient } from 'apollo-server-testing' +import { testEnvironment, resetEntities, createUser } from '../../../test/helpers' import gql from 'graphql-tag' import { GraphQLError } from 'graphql' -import createServer from '../../server/createServer' -import { resetDB, initialize } from '@dbTools/helpers' +import { resetDB } from '@dbTools/helpers' import { LoginEmailOptIn } from '@entity/LoginEmailOptIn' import { User } from '@entity/User' import CONFIG from '../../config' @@ -30,15 +29,25 @@ jest.mock('../../apis/KlicktippController', () => { }) */ -let mutate: any -let con: any +let token: string + +// eslint-disable-next-line @typescript-eslint/no-unused-vars +const headerPushMock = jest.fn((t) => (token = t.value)) + +const context = { + setHeaders: { + push: headerPushMock, + forEach: jest.fn(), + }, +} + +let mutate: any, query: any, con: any beforeAll(async () => { - const server = await createServer({}) - con = server.con - mutate = createTestClient(server.apollo).mutate - await initialize() - await resetDB() + const testEnv = await testEnvironment(context) + mutate = testEnv.mutate + query = testEnv.query + con = testEnv.con }) afterAll(async () => { @@ -78,11 +87,12 @@ describe('UserResolver', () => { let emailOptIn: string beforeAll(async () => { + jest.clearAllMocks() result = await mutate({ mutation, variables }) }) afterAll(async () => { - await resetDB() + await resetEntities([User, LoginEmailOptIn]) }) it('returns success', () => { @@ -225,6 +235,7 @@ describe('UserResolver', () => { setPassword(code: $code, password: $password) } ` + let result: any let emailOptIn: string @@ -243,7 +254,7 @@ describe('UserResolver', () => { }) afterAll(async () => { - await resetDB() + await resetEntities([User, LoginEmailOptIn]) }) it('sets email checked to true', () => { @@ -286,7 +297,7 @@ describe('UserResolver', () => { }) afterAll(async () => { - await resetDB() + await resetEntities([User, LoginEmailOptIn]) }) it('throws an error', () => { @@ -312,7 +323,7 @@ describe('UserResolver', () => { }) afterAll(async () => { - await resetDB() + await resetEntities([User, LoginEmailOptIn]) }) it('throws an error', () => { @@ -324,4 +335,93 @@ describe('UserResolver', () => { }) }) }) + + describe('login', () => { + const loginQuery = gql` + query ($email: String!, $password: String!, $publisherId: Int) { + login(email: $email, password: $password, publisherId: $publisherId) { + email + firstName + lastName + language + coinanimation + klickTipp { + newsletterState + } + hasElopage + publisherId + isAdmin + } + } + ` + + const variables = { + email: 'peter@lustig.de', + password: 'Aa12345_', + publisherId: 1234, + } + + let result: User + + afterAll(async () => { + await resetEntities([User, LoginEmailOptIn]) + }) + + describe('no users in database', () => { + beforeAll(async () => { + result = await query({ query: loginQuery, variables }) + }) + + it('throws an error', () => { + expect(result).toEqual( + expect.objectContaining({ + errors: [new GraphQLError('No user with this credentials')], + }), + ) + }) + }) + + describe('user is in database', () => { + beforeAll(async () => { + await createUser(mutate, { + email: 'peter@lustig.de', + firstName: 'Peter', + lastName: 'Lustig', + language: 'de', + publisherId: 1234, + }) + result = await query({ query: loginQuery, variables }) + }) + + afterAll(async () => { + await resetEntities([User, LoginEmailOptIn]) + }) + + it('returns the user object', () => { + expect(result).toEqual( + expect.objectContaining({ + data: { + login: { + coinanimation: true, + email: 'peter@lustig.de', + firstName: 'Peter', + hasElopage: false, + isAdmin: false, + klickTipp: { + newsletterState: false, + }, + language: 'de', + lastName: 'Lustig', + publisherId: 1234, + }, + }, + }), + ) + }) + + it('sets the token in the header', () => { + expect(headerPushMock).toBeCalledWith({ key: 'token', value: expect.any(String) }) + }) + }) + }) }) diff --git a/backend/test/graphql.ts b/backend/test/graphql.ts new file mode 100644 index 000000000..89393876e --- /dev/null +++ b/backend/test/graphql.ts @@ -0,0 +1,25 @@ +import gql from 'graphql-tag' + +export const createUserMutation = gql` + mutation ( + $email: String! + $firstName: String! + $lastName: String! + $language: String! + $publisherId: Int + ) { + createUser( + email: $email + firstName: $firstName + lastName: $lastName + language: $language + publisherId: $publisherId + ) + } +` + +export const setPasswordMutation = gql` + mutation ($code: String!, $password: String!) { + setPassword(code: $code, password: $password) + } +` diff --git a/backend/test/helpers.ts b/backend/test/helpers.ts new file mode 100644 index 000000000..f3588cd43 --- /dev/null +++ b/backend/test/helpers.ts @@ -0,0 +1,46 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +/* eslint-disable @typescript-eslint/explicit-module-boundary-types */ + +import { createTestClient } from 'apollo-server-testing' +import createServer from '../src/server/createServer' +import { resetDB, initialize } from '@dbTools/helpers' +import { createUserMutation, setPasswordMutation } from './graphql' +import { LoginEmailOptIn } from '@entity/LoginEmailOptIn' +import { User } from '@entity/User' + +export const testEnvironment = async (context: any) => { + const server = await createServer(context) + const con = server.con + const testClient = createTestClient(server.apollo) + const mutate = testClient.mutate + const query = testClient.query + await initialize() + await resetDB() + return { mutate, query, con } +} + +export const resetEntity = async (entity: any) => { + const items = await entity.find() + if (items.length > 0) { + const ids = items.map((i: any) => i.id) + await entity.delete(ids) + } +} + +export const resetEntities = async (entities: any[]) => { + for (let i = 0; i < entities.length; i++) { + await resetEntity(entities[i]) + } +} + +export const createUser = async (mutate: any, user: any) => { + await mutate({ mutation: createUserMutation, variables: user }) + const dbUser = await User.findOne({ where: { email: user.email } }) + if (!dbUser) throw new Error('Ups, no user found') + const optin = await LoginEmailOptIn.findOne(dbUser.id) + if (!optin) throw new Error('Ups, no optin found') + await mutate({ + mutation: setPasswordMutation, + variables: { password: 'Aa12345_', code: optin.verificationCode }, + }) +} From 6202c336b7cdf29a38412a6b11ca21789df22338 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Thu, 24 Feb 2022 20:18:52 +0100 Subject: [PATCH 034/577] use graphql imports --- .../src/graphql/resolver/UserResolver.test.ts | 51 ++----------------- 1 file changed, 5 insertions(+), 46 deletions(-) diff --git a/backend/src/graphql/resolver/UserResolver.test.ts b/backend/src/graphql/resolver/UserResolver.test.ts index d40648c83..83626577d 100644 --- a/backend/src/graphql/resolver/UserResolver.test.ts +++ b/backend/src/graphql/resolver/UserResolver.test.ts @@ -2,6 +2,7 @@ /* eslint-disable @typescript-eslint/explicit-module-boundary-types */ import { testEnvironment, resetEntities, createUser } from '../../../test/helpers' +import { createUserMutation, setPasswordMutation } from '../../../test/graphql' import gql from 'graphql-tag' import { GraphQLError } from 'graphql' import { resetDB } from '@dbTools/helpers' @@ -65,30 +66,12 @@ describe('UserResolver', () => { publisherId: 1234, } - const mutation = gql` - mutation ( - $email: String! - $firstName: String! - $lastName: String! - $language: String! - $publisherId: Int - ) { - createUser( - email: $email - firstName: $firstName - lastName: $lastName - language: $language - publisherId: $publisherId - ) - } - ` - let result: any let emailOptIn: string beforeAll(async () => { jest.clearAllMocks() - result = await mutate({ mutation, variables }) + result = await mutate({ mutation: createUserMutation, variables }) }) afterAll(async () => { @@ -160,7 +143,7 @@ describe('UserResolver', () => { describe('email already exists', () => { it('throws an error', async () => { - await expect(mutate({ mutation, variables })).resolves.toEqual( + await expect(mutate({ mutation: createUserMutation, variables })).resolves.toEqual( expect.objectContaining({ errors: [new GraphQLError('User already exists.')], }), @@ -171,7 +154,7 @@ describe('UserResolver', () => { describe('unknown language', () => { it('sets "de" as default language', async () => { await mutate({ - mutation, + mutation: createUserMutation, variables: { ...variables, email: 'bibi@bloxberg.de', language: 'es' }, }) await expect(User.find()).resolves.toEqual( @@ -188,7 +171,7 @@ describe('UserResolver', () => { describe('no publisher id', () => { it('sets publisher id to null', async () => { await mutate({ - mutation, + mutation: createUserMutation, variables: { ...variables, email: 'raeuber@hotzenplotz.de', publisherId: undefined }, }) await expect(User.find()).resolves.toEqual( @@ -204,24 +187,6 @@ describe('UserResolver', () => { }) describe('setPassword', () => { - const createUserMutation = gql` - mutation ( - $email: String! - $firstName: String! - $lastName: String! - $language: String! - $publisherId: Int - ) { - createUser( - email: $email - firstName: $firstName - lastName: $lastName - language: $language - publisherId: $publisherId - ) - } - ` - const createUserVariables = { email: 'peter@lustig.de', firstName: 'Peter', @@ -230,12 +195,6 @@ describe('UserResolver', () => { publisherId: 1234, } - const setPasswordMutation = gql` - mutation ($code: String!, $password: String!) { - setPassword(code: $code, password: $password) - } - ` - let result: any let emailOptIn: string From 507db8b40ebacccb93f63d0ac6d7cba9c2c6c28a Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Mon, 7 Mar 2022 17:26:00 +0100 Subject: [PATCH 035/577] add module alias package --- frontend/package.json | 4 ++++ frontend/yarn.lock | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/frontend/package.json b/frontend/package.json index 5629e0360..7498513f0 100755 --- a/frontend/package.json +++ b/frontend/package.json @@ -44,6 +44,7 @@ "jest": "^26.6.3", "jest-canvas-mock": "^2.3.1", "jest-environment-jsdom-sixteen": "^2.0.0", + "module-alias": "^2.2.2", "particles-bg-vue": "1.2.3", "portal-vue": "^2.1.7", "prettier": "^2.2.1", @@ -81,6 +82,9 @@ "vue-template-compiler": "^2.6.11", "webpack-bundle-analyzer": "^4.5.0" }, + "_moduleAliases": { + "@components": "./components" + }, "postcss": { "plugins": { "autoprefixer": {} diff --git a/frontend/yarn.lock b/frontend/yarn.lock index 296e0f01b..19ee31c94 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -10287,6 +10287,11 @@ mkdirp@^1.0.3, mkdirp@^1.0.4: resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== +module-alias@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/module-alias/-/module-alias-2.2.2.tgz#151cdcecc24e25739ff0aa6e51e1c5716974c0e0" + integrity sha512-A/78XjoX2EmNvppVWEhM2oGk3x4lLxnkEA4jTbaK97QKSDjkIoOsKQlfylt/d3kKKi596Qy3NP5XrXJ6fZIC9Q== + moment@^2.19.2: version "2.29.1" resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3" From c79021187021368d2f9b9e0df8011368dcb781d4 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Mon, 7 Mar 2022 17:29:32 +0100 Subject: [PATCH 036/577] remove views folder --- frontend/src/{views => components}/NotFoundPage.spec.js | 0 frontend/src/{views => components}/NotFoundPage.vue | 0 frontend/src/{views/Layout => layouts}/AuthLayout_gdd.spec.js | 0 frontend/src/{views/Layout => layouts}/AuthLayout_gdd.vue | 0 frontend/src/{views/Layout => layouts}/ContentFooter.spec.js | 0 frontend/src/{views/Layout => layouts}/ContentFooter.vue | 0 .../src/{views/Layout => layouts}/DashboardLayout_gdd.spec.js | 0 frontend/src/{views/Layout => layouts}/DashboardLayout_gdd.vue | 0 frontend/src/{views/Pages => pages}/AccountOverview.spec.js | 0 frontend/src/{views/Pages => pages}/AccountOverview.vue | 0 .../Pages => pages}/AccountOverview/GddTransactionList.spec.js | 0 .../{views/Pages => pages}/AccountOverview/GddTransactionList.vue | 0 .../AccountOverview/GddTransactionListFooter.spec.js | 0 .../Pages => pages}/AccountOverview/GddTransactionListFooter.vue | 0 .../Pages => pages}/AccountOverview/GdtTransactionList.spec.js | 0 .../{views/Pages => pages}/AccountOverview/GdtTransactionList.vue | 0 frontend/src/{views/Pages => pages}/ForgotPassword.spec.js | 0 frontend/src/{views/Pages => pages}/ForgotPassword.vue | 0 frontend/src/{views/Pages => pages}/Login.spec.js | 0 frontend/src/{views/Pages => pages}/Login.vue | 0 frontend/src/{views/Pages => pages}/Register.spec.js | 0 frontend/src/{views/Pages => pages}/Register.vue | 0 frontend/src/{views/Pages => pages}/RegisterCommunity.spec.js | 0 frontend/src/{views/Pages => pages}/RegisterCommunity.vue | 0 .../src/{views/Pages => pages}/RegisterSelectCommunity.spec.js | 0 frontend/src/{views/Pages => pages}/RegisterSelectCommunity.vue | 0 frontend/src/{views/Pages => pages}/ResetPassword.spec.js | 0 frontend/src/{views/Pages => pages}/ResetPassword.vue | 0 frontend/src/{views/Pages => pages}/SendOverview.spec.js | 0 frontend/src/{views/Pages => pages}/SendOverview.vue | 0 frontend/src/{views/Pages => pages}/SendOverview/GddSend.spec.js | 0 frontend/src/{views/Pages => pages}/SendOverview/GddSend.vue | 0 .../{views/Pages => pages}/SendOverview/GddSend/QrCode.spec.js | 0 .../src/{views/Pages => pages}/SendOverview/GddSend/QrCode.vue | 0 .../SendOverview/GddSend/TransactionConfirmation.vue | 0 .../Pages => pages}/SendOverview/GddSend/TransactionForm.spec.js | 0 .../Pages => pages}/SendOverview/GddSend/TransactionForm.vue | 0 .../Pages => pages}/SendOverview/GddSend/TransactionResult.vue | 0 frontend/src/{views/Pages => pages}/UserProfile/UserCard.spec.js | 0 frontend/src/{views/Pages => pages}/UserProfile/UserCard.vue | 0 .../Pages => pages}/UserProfile/UserCard_CoinAnimation.spec.js | 0 .../{views/Pages => pages}/UserProfile/UserCard_CoinAnimation.vue | 0 .../Pages => pages}/UserProfile/UserCard_FormUserData.spec.js | 0 .../{views/Pages => pages}/UserProfile/UserCard_FormUserData.vue | 0 .../Pages => pages}/UserProfile/UserCard_FormUserMail.spec.js | 0 .../{views/Pages => pages}/UserProfile/UserCard_FormUserMail.vue | 0 .../Pages => pages}/UserProfile/UserCard_FormUserPasswort.spec.js | 0 .../Pages => pages}/UserProfile/UserCard_FormUserPasswort.vue | 0 .../Pages => pages}/UserProfile/UserCard_FormUsername.spec.js.old | 0 .../Pages => pages}/UserProfile/UserCard_FormUsername.vue.old | 0 .../{views/Pages => pages}/UserProfile/UserCard_Language.spec.js | 0 .../src/{views/Pages => pages}/UserProfile/UserCard_Language.vue | 0 .../Pages => pages}/UserProfile/UserCard_Newsletter.spec.js | 0 .../{views/Pages => pages}/UserProfile/UserCard_Newsletter.vue | 0 frontend/src/{views/Pages => pages}/UserProfileOverview.spec.js | 0 frontend/src/{views/Pages => pages}/UserProfileOverview.vue | 0 .../src/{views/Pages => pages}/UserProfileTransactionList.spec.js | 0 .../src/{views/Pages => pages}/UserProfileTransactionList.vue | 0 frontend/src/{views/Pages => pages}/thx.spec.js | 0 frontend/src/{views/Pages => pages}/thx.vue | 0 60 files changed, 0 insertions(+), 0 deletions(-) rename frontend/src/{views => components}/NotFoundPage.spec.js (100%) rename frontend/src/{views => components}/NotFoundPage.vue (100%) rename frontend/src/{views/Layout => layouts}/AuthLayout_gdd.spec.js (100%) rename frontend/src/{views/Layout => layouts}/AuthLayout_gdd.vue (100%) rename frontend/src/{views/Layout => layouts}/ContentFooter.spec.js (100%) rename frontend/src/{views/Layout => layouts}/ContentFooter.vue (100%) rename frontend/src/{views/Layout => layouts}/DashboardLayout_gdd.spec.js (100%) rename frontend/src/{views/Layout => layouts}/DashboardLayout_gdd.vue (100%) rename frontend/src/{views/Pages => pages}/AccountOverview.spec.js (100%) rename frontend/src/{views/Pages => pages}/AccountOverview.vue (100%) rename frontend/src/{views/Pages => pages}/AccountOverview/GddTransactionList.spec.js (100%) rename frontend/src/{views/Pages => pages}/AccountOverview/GddTransactionList.vue (100%) rename frontend/src/{views/Pages => pages}/AccountOverview/GddTransactionListFooter.spec.js (100%) rename frontend/src/{views/Pages => pages}/AccountOverview/GddTransactionListFooter.vue (100%) rename frontend/src/{views/Pages => pages}/AccountOverview/GdtTransactionList.spec.js (100%) rename frontend/src/{views/Pages => pages}/AccountOverview/GdtTransactionList.vue (100%) rename frontend/src/{views/Pages => pages}/ForgotPassword.spec.js (100%) rename frontend/src/{views/Pages => pages}/ForgotPassword.vue (100%) rename frontend/src/{views/Pages => pages}/Login.spec.js (100%) rename frontend/src/{views/Pages => pages}/Login.vue (100%) rename frontend/src/{views/Pages => pages}/Register.spec.js (100%) rename frontend/src/{views/Pages => pages}/Register.vue (100%) rename frontend/src/{views/Pages => pages}/RegisterCommunity.spec.js (100%) rename frontend/src/{views/Pages => pages}/RegisterCommunity.vue (100%) rename frontend/src/{views/Pages => pages}/RegisterSelectCommunity.spec.js (100%) rename frontend/src/{views/Pages => pages}/RegisterSelectCommunity.vue (100%) rename frontend/src/{views/Pages => pages}/ResetPassword.spec.js (100%) rename frontend/src/{views/Pages => pages}/ResetPassword.vue (100%) rename frontend/src/{views/Pages => pages}/SendOverview.spec.js (100%) rename frontend/src/{views/Pages => pages}/SendOverview.vue (100%) rename frontend/src/{views/Pages => pages}/SendOverview/GddSend.spec.js (100%) rename frontend/src/{views/Pages => pages}/SendOverview/GddSend.vue (100%) rename frontend/src/{views/Pages => pages}/SendOverview/GddSend/QrCode.spec.js (100%) rename frontend/src/{views/Pages => pages}/SendOverview/GddSend/QrCode.vue (100%) rename frontend/src/{views/Pages => pages}/SendOverview/GddSend/TransactionConfirmation.vue (100%) rename frontend/src/{views/Pages => pages}/SendOverview/GddSend/TransactionForm.spec.js (100%) rename frontend/src/{views/Pages => pages}/SendOverview/GddSend/TransactionForm.vue (100%) rename frontend/src/{views/Pages => pages}/SendOverview/GddSend/TransactionResult.vue (100%) rename frontend/src/{views/Pages => pages}/UserProfile/UserCard.spec.js (100%) rename frontend/src/{views/Pages => pages}/UserProfile/UserCard.vue (100%) rename frontend/src/{views/Pages => pages}/UserProfile/UserCard_CoinAnimation.spec.js (100%) rename frontend/src/{views/Pages => pages}/UserProfile/UserCard_CoinAnimation.vue (100%) rename frontend/src/{views/Pages => pages}/UserProfile/UserCard_FormUserData.spec.js (100%) rename frontend/src/{views/Pages => pages}/UserProfile/UserCard_FormUserData.vue (100%) rename frontend/src/{views/Pages => pages}/UserProfile/UserCard_FormUserMail.spec.js (100%) rename frontend/src/{views/Pages => pages}/UserProfile/UserCard_FormUserMail.vue (100%) rename frontend/src/{views/Pages => pages}/UserProfile/UserCard_FormUserPasswort.spec.js (100%) rename frontend/src/{views/Pages => pages}/UserProfile/UserCard_FormUserPasswort.vue (100%) rename frontend/src/{views/Pages => pages}/UserProfile/UserCard_FormUsername.spec.js.old (100%) rename frontend/src/{views/Pages => pages}/UserProfile/UserCard_FormUsername.vue.old (100%) rename frontend/src/{views/Pages => pages}/UserProfile/UserCard_Language.spec.js (100%) rename frontend/src/{views/Pages => pages}/UserProfile/UserCard_Language.vue (100%) rename frontend/src/{views/Pages => pages}/UserProfile/UserCard_Newsletter.spec.js (100%) rename frontend/src/{views/Pages => pages}/UserProfile/UserCard_Newsletter.vue (100%) rename frontend/src/{views/Pages => pages}/UserProfileOverview.spec.js (100%) rename frontend/src/{views/Pages => pages}/UserProfileOverview.vue (100%) rename frontend/src/{views/Pages => pages}/UserProfileTransactionList.spec.js (100%) rename frontend/src/{views/Pages => pages}/UserProfileTransactionList.vue (100%) rename frontend/src/{views/Pages => pages}/thx.spec.js (100%) rename frontend/src/{views/Pages => pages}/thx.vue (100%) diff --git a/frontend/src/views/NotFoundPage.spec.js b/frontend/src/components/NotFoundPage.spec.js similarity index 100% rename from frontend/src/views/NotFoundPage.spec.js rename to frontend/src/components/NotFoundPage.spec.js diff --git a/frontend/src/views/NotFoundPage.vue b/frontend/src/components/NotFoundPage.vue similarity index 100% rename from frontend/src/views/NotFoundPage.vue rename to frontend/src/components/NotFoundPage.vue diff --git a/frontend/src/views/Layout/AuthLayout_gdd.spec.js b/frontend/src/layouts/AuthLayout_gdd.spec.js similarity index 100% rename from frontend/src/views/Layout/AuthLayout_gdd.spec.js rename to frontend/src/layouts/AuthLayout_gdd.spec.js diff --git a/frontend/src/views/Layout/AuthLayout_gdd.vue b/frontend/src/layouts/AuthLayout_gdd.vue similarity index 100% rename from frontend/src/views/Layout/AuthLayout_gdd.vue rename to frontend/src/layouts/AuthLayout_gdd.vue diff --git a/frontend/src/views/Layout/ContentFooter.spec.js b/frontend/src/layouts/ContentFooter.spec.js similarity index 100% rename from frontend/src/views/Layout/ContentFooter.spec.js rename to frontend/src/layouts/ContentFooter.spec.js diff --git a/frontend/src/views/Layout/ContentFooter.vue b/frontend/src/layouts/ContentFooter.vue similarity index 100% rename from frontend/src/views/Layout/ContentFooter.vue rename to frontend/src/layouts/ContentFooter.vue diff --git a/frontend/src/views/Layout/DashboardLayout_gdd.spec.js b/frontend/src/layouts/DashboardLayout_gdd.spec.js similarity index 100% rename from frontend/src/views/Layout/DashboardLayout_gdd.spec.js rename to frontend/src/layouts/DashboardLayout_gdd.spec.js diff --git a/frontend/src/views/Layout/DashboardLayout_gdd.vue b/frontend/src/layouts/DashboardLayout_gdd.vue similarity index 100% rename from frontend/src/views/Layout/DashboardLayout_gdd.vue rename to frontend/src/layouts/DashboardLayout_gdd.vue diff --git a/frontend/src/views/Pages/AccountOverview.spec.js b/frontend/src/pages/AccountOverview.spec.js similarity index 100% rename from frontend/src/views/Pages/AccountOverview.spec.js rename to frontend/src/pages/AccountOverview.spec.js diff --git a/frontend/src/views/Pages/AccountOverview.vue b/frontend/src/pages/AccountOverview.vue similarity index 100% rename from frontend/src/views/Pages/AccountOverview.vue rename to frontend/src/pages/AccountOverview.vue diff --git a/frontend/src/views/Pages/AccountOverview/GddTransactionList.spec.js b/frontend/src/pages/AccountOverview/GddTransactionList.spec.js similarity index 100% rename from frontend/src/views/Pages/AccountOverview/GddTransactionList.spec.js rename to frontend/src/pages/AccountOverview/GddTransactionList.spec.js diff --git a/frontend/src/views/Pages/AccountOverview/GddTransactionList.vue b/frontend/src/pages/AccountOverview/GddTransactionList.vue similarity index 100% rename from frontend/src/views/Pages/AccountOverview/GddTransactionList.vue rename to frontend/src/pages/AccountOverview/GddTransactionList.vue diff --git a/frontend/src/views/Pages/AccountOverview/GddTransactionListFooter.spec.js b/frontend/src/pages/AccountOverview/GddTransactionListFooter.spec.js similarity index 100% rename from frontend/src/views/Pages/AccountOverview/GddTransactionListFooter.spec.js rename to frontend/src/pages/AccountOverview/GddTransactionListFooter.spec.js diff --git a/frontend/src/views/Pages/AccountOverview/GddTransactionListFooter.vue b/frontend/src/pages/AccountOverview/GddTransactionListFooter.vue similarity index 100% rename from frontend/src/views/Pages/AccountOverview/GddTransactionListFooter.vue rename to frontend/src/pages/AccountOverview/GddTransactionListFooter.vue diff --git a/frontend/src/views/Pages/AccountOverview/GdtTransactionList.spec.js b/frontend/src/pages/AccountOverview/GdtTransactionList.spec.js similarity index 100% rename from frontend/src/views/Pages/AccountOverview/GdtTransactionList.spec.js rename to frontend/src/pages/AccountOverview/GdtTransactionList.spec.js diff --git a/frontend/src/views/Pages/AccountOverview/GdtTransactionList.vue b/frontend/src/pages/AccountOverview/GdtTransactionList.vue similarity index 100% rename from frontend/src/views/Pages/AccountOverview/GdtTransactionList.vue rename to frontend/src/pages/AccountOverview/GdtTransactionList.vue diff --git a/frontend/src/views/Pages/ForgotPassword.spec.js b/frontend/src/pages/ForgotPassword.spec.js similarity index 100% rename from frontend/src/views/Pages/ForgotPassword.spec.js rename to frontend/src/pages/ForgotPassword.spec.js diff --git a/frontend/src/views/Pages/ForgotPassword.vue b/frontend/src/pages/ForgotPassword.vue similarity index 100% rename from frontend/src/views/Pages/ForgotPassword.vue rename to frontend/src/pages/ForgotPassword.vue diff --git a/frontend/src/views/Pages/Login.spec.js b/frontend/src/pages/Login.spec.js similarity index 100% rename from frontend/src/views/Pages/Login.spec.js rename to frontend/src/pages/Login.spec.js diff --git a/frontend/src/views/Pages/Login.vue b/frontend/src/pages/Login.vue similarity index 100% rename from frontend/src/views/Pages/Login.vue rename to frontend/src/pages/Login.vue diff --git a/frontend/src/views/Pages/Register.spec.js b/frontend/src/pages/Register.spec.js similarity index 100% rename from frontend/src/views/Pages/Register.spec.js rename to frontend/src/pages/Register.spec.js diff --git a/frontend/src/views/Pages/Register.vue b/frontend/src/pages/Register.vue similarity index 100% rename from frontend/src/views/Pages/Register.vue rename to frontend/src/pages/Register.vue diff --git a/frontend/src/views/Pages/RegisterCommunity.spec.js b/frontend/src/pages/RegisterCommunity.spec.js similarity index 100% rename from frontend/src/views/Pages/RegisterCommunity.spec.js rename to frontend/src/pages/RegisterCommunity.spec.js diff --git a/frontend/src/views/Pages/RegisterCommunity.vue b/frontend/src/pages/RegisterCommunity.vue similarity index 100% rename from frontend/src/views/Pages/RegisterCommunity.vue rename to frontend/src/pages/RegisterCommunity.vue diff --git a/frontend/src/views/Pages/RegisterSelectCommunity.spec.js b/frontend/src/pages/RegisterSelectCommunity.spec.js similarity index 100% rename from frontend/src/views/Pages/RegisterSelectCommunity.spec.js rename to frontend/src/pages/RegisterSelectCommunity.spec.js diff --git a/frontend/src/views/Pages/RegisterSelectCommunity.vue b/frontend/src/pages/RegisterSelectCommunity.vue similarity index 100% rename from frontend/src/views/Pages/RegisterSelectCommunity.vue rename to frontend/src/pages/RegisterSelectCommunity.vue diff --git a/frontend/src/views/Pages/ResetPassword.spec.js b/frontend/src/pages/ResetPassword.spec.js similarity index 100% rename from frontend/src/views/Pages/ResetPassword.spec.js rename to frontend/src/pages/ResetPassword.spec.js diff --git a/frontend/src/views/Pages/ResetPassword.vue b/frontend/src/pages/ResetPassword.vue similarity index 100% rename from frontend/src/views/Pages/ResetPassword.vue rename to frontend/src/pages/ResetPassword.vue diff --git a/frontend/src/views/Pages/SendOverview.spec.js b/frontend/src/pages/SendOverview.spec.js similarity index 100% rename from frontend/src/views/Pages/SendOverview.spec.js rename to frontend/src/pages/SendOverview.spec.js diff --git a/frontend/src/views/Pages/SendOverview.vue b/frontend/src/pages/SendOverview.vue similarity index 100% rename from frontend/src/views/Pages/SendOverview.vue rename to frontend/src/pages/SendOverview.vue diff --git a/frontend/src/views/Pages/SendOverview/GddSend.spec.js b/frontend/src/pages/SendOverview/GddSend.spec.js similarity index 100% rename from frontend/src/views/Pages/SendOverview/GddSend.spec.js rename to frontend/src/pages/SendOverview/GddSend.spec.js diff --git a/frontend/src/views/Pages/SendOverview/GddSend.vue b/frontend/src/pages/SendOverview/GddSend.vue similarity index 100% rename from frontend/src/views/Pages/SendOverview/GddSend.vue rename to frontend/src/pages/SendOverview/GddSend.vue diff --git a/frontend/src/views/Pages/SendOverview/GddSend/QrCode.spec.js b/frontend/src/pages/SendOverview/GddSend/QrCode.spec.js similarity index 100% rename from frontend/src/views/Pages/SendOverview/GddSend/QrCode.spec.js rename to frontend/src/pages/SendOverview/GddSend/QrCode.spec.js diff --git a/frontend/src/views/Pages/SendOverview/GddSend/QrCode.vue b/frontend/src/pages/SendOverview/GddSend/QrCode.vue similarity index 100% rename from frontend/src/views/Pages/SendOverview/GddSend/QrCode.vue rename to frontend/src/pages/SendOverview/GddSend/QrCode.vue diff --git a/frontend/src/views/Pages/SendOverview/GddSend/TransactionConfirmation.vue b/frontend/src/pages/SendOverview/GddSend/TransactionConfirmation.vue similarity index 100% rename from frontend/src/views/Pages/SendOverview/GddSend/TransactionConfirmation.vue rename to frontend/src/pages/SendOverview/GddSend/TransactionConfirmation.vue diff --git a/frontend/src/views/Pages/SendOverview/GddSend/TransactionForm.spec.js b/frontend/src/pages/SendOverview/GddSend/TransactionForm.spec.js similarity index 100% rename from frontend/src/views/Pages/SendOverview/GddSend/TransactionForm.spec.js rename to frontend/src/pages/SendOverview/GddSend/TransactionForm.spec.js diff --git a/frontend/src/views/Pages/SendOverview/GddSend/TransactionForm.vue b/frontend/src/pages/SendOverview/GddSend/TransactionForm.vue similarity index 100% rename from frontend/src/views/Pages/SendOverview/GddSend/TransactionForm.vue rename to frontend/src/pages/SendOverview/GddSend/TransactionForm.vue diff --git a/frontend/src/views/Pages/SendOverview/GddSend/TransactionResult.vue b/frontend/src/pages/SendOverview/GddSend/TransactionResult.vue similarity index 100% rename from frontend/src/views/Pages/SendOverview/GddSend/TransactionResult.vue rename to frontend/src/pages/SendOverview/GddSend/TransactionResult.vue diff --git a/frontend/src/views/Pages/UserProfile/UserCard.spec.js b/frontend/src/pages/UserProfile/UserCard.spec.js similarity index 100% rename from frontend/src/views/Pages/UserProfile/UserCard.spec.js rename to frontend/src/pages/UserProfile/UserCard.spec.js diff --git a/frontend/src/views/Pages/UserProfile/UserCard.vue b/frontend/src/pages/UserProfile/UserCard.vue similarity index 100% rename from frontend/src/views/Pages/UserProfile/UserCard.vue rename to frontend/src/pages/UserProfile/UserCard.vue diff --git a/frontend/src/views/Pages/UserProfile/UserCard_CoinAnimation.spec.js b/frontend/src/pages/UserProfile/UserCard_CoinAnimation.spec.js similarity index 100% rename from frontend/src/views/Pages/UserProfile/UserCard_CoinAnimation.spec.js rename to frontend/src/pages/UserProfile/UserCard_CoinAnimation.spec.js diff --git a/frontend/src/views/Pages/UserProfile/UserCard_CoinAnimation.vue b/frontend/src/pages/UserProfile/UserCard_CoinAnimation.vue similarity index 100% rename from frontend/src/views/Pages/UserProfile/UserCard_CoinAnimation.vue rename to frontend/src/pages/UserProfile/UserCard_CoinAnimation.vue diff --git a/frontend/src/views/Pages/UserProfile/UserCard_FormUserData.spec.js b/frontend/src/pages/UserProfile/UserCard_FormUserData.spec.js similarity index 100% rename from frontend/src/views/Pages/UserProfile/UserCard_FormUserData.spec.js rename to frontend/src/pages/UserProfile/UserCard_FormUserData.spec.js diff --git a/frontend/src/views/Pages/UserProfile/UserCard_FormUserData.vue b/frontend/src/pages/UserProfile/UserCard_FormUserData.vue similarity index 100% rename from frontend/src/views/Pages/UserProfile/UserCard_FormUserData.vue rename to frontend/src/pages/UserProfile/UserCard_FormUserData.vue diff --git a/frontend/src/views/Pages/UserProfile/UserCard_FormUserMail.spec.js b/frontend/src/pages/UserProfile/UserCard_FormUserMail.spec.js similarity index 100% rename from frontend/src/views/Pages/UserProfile/UserCard_FormUserMail.spec.js rename to frontend/src/pages/UserProfile/UserCard_FormUserMail.spec.js diff --git a/frontend/src/views/Pages/UserProfile/UserCard_FormUserMail.vue b/frontend/src/pages/UserProfile/UserCard_FormUserMail.vue similarity index 100% rename from frontend/src/views/Pages/UserProfile/UserCard_FormUserMail.vue rename to frontend/src/pages/UserProfile/UserCard_FormUserMail.vue diff --git a/frontend/src/views/Pages/UserProfile/UserCard_FormUserPasswort.spec.js b/frontend/src/pages/UserProfile/UserCard_FormUserPasswort.spec.js similarity index 100% rename from frontend/src/views/Pages/UserProfile/UserCard_FormUserPasswort.spec.js rename to frontend/src/pages/UserProfile/UserCard_FormUserPasswort.spec.js diff --git a/frontend/src/views/Pages/UserProfile/UserCard_FormUserPasswort.vue b/frontend/src/pages/UserProfile/UserCard_FormUserPasswort.vue similarity index 100% rename from frontend/src/views/Pages/UserProfile/UserCard_FormUserPasswort.vue rename to frontend/src/pages/UserProfile/UserCard_FormUserPasswort.vue diff --git a/frontend/src/views/Pages/UserProfile/UserCard_FormUsername.spec.js.old b/frontend/src/pages/UserProfile/UserCard_FormUsername.spec.js.old similarity index 100% rename from frontend/src/views/Pages/UserProfile/UserCard_FormUsername.spec.js.old rename to frontend/src/pages/UserProfile/UserCard_FormUsername.spec.js.old diff --git a/frontend/src/views/Pages/UserProfile/UserCard_FormUsername.vue.old b/frontend/src/pages/UserProfile/UserCard_FormUsername.vue.old similarity index 100% rename from frontend/src/views/Pages/UserProfile/UserCard_FormUsername.vue.old rename to frontend/src/pages/UserProfile/UserCard_FormUsername.vue.old diff --git a/frontend/src/views/Pages/UserProfile/UserCard_Language.spec.js b/frontend/src/pages/UserProfile/UserCard_Language.spec.js similarity index 100% rename from frontend/src/views/Pages/UserProfile/UserCard_Language.spec.js rename to frontend/src/pages/UserProfile/UserCard_Language.spec.js diff --git a/frontend/src/views/Pages/UserProfile/UserCard_Language.vue b/frontend/src/pages/UserProfile/UserCard_Language.vue similarity index 100% rename from frontend/src/views/Pages/UserProfile/UserCard_Language.vue rename to frontend/src/pages/UserProfile/UserCard_Language.vue diff --git a/frontend/src/views/Pages/UserProfile/UserCard_Newsletter.spec.js b/frontend/src/pages/UserProfile/UserCard_Newsletter.spec.js similarity index 100% rename from frontend/src/views/Pages/UserProfile/UserCard_Newsletter.spec.js rename to frontend/src/pages/UserProfile/UserCard_Newsletter.spec.js diff --git a/frontend/src/views/Pages/UserProfile/UserCard_Newsletter.vue b/frontend/src/pages/UserProfile/UserCard_Newsletter.vue similarity index 100% rename from frontend/src/views/Pages/UserProfile/UserCard_Newsletter.vue rename to frontend/src/pages/UserProfile/UserCard_Newsletter.vue diff --git a/frontend/src/views/Pages/UserProfileOverview.spec.js b/frontend/src/pages/UserProfileOverview.spec.js similarity index 100% rename from frontend/src/views/Pages/UserProfileOverview.spec.js rename to frontend/src/pages/UserProfileOverview.spec.js diff --git a/frontend/src/views/Pages/UserProfileOverview.vue b/frontend/src/pages/UserProfileOverview.vue similarity index 100% rename from frontend/src/views/Pages/UserProfileOverview.vue rename to frontend/src/pages/UserProfileOverview.vue diff --git a/frontend/src/views/Pages/UserProfileTransactionList.spec.js b/frontend/src/pages/UserProfileTransactionList.spec.js similarity index 100% rename from frontend/src/views/Pages/UserProfileTransactionList.spec.js rename to frontend/src/pages/UserProfileTransactionList.spec.js diff --git a/frontend/src/views/Pages/UserProfileTransactionList.vue b/frontend/src/pages/UserProfileTransactionList.vue similarity index 100% rename from frontend/src/views/Pages/UserProfileTransactionList.vue rename to frontend/src/pages/UserProfileTransactionList.vue diff --git a/frontend/src/views/Pages/thx.spec.js b/frontend/src/pages/thx.spec.js similarity index 100% rename from frontend/src/views/Pages/thx.spec.js rename to frontend/src/pages/thx.spec.js diff --git a/frontend/src/views/Pages/thx.vue b/frontend/src/pages/thx.vue similarity index 100% rename from frontend/src/views/Pages/thx.vue rename to frontend/src/pages/thx.vue From 14dcb3fa933fa64005b21616d7f42d2f92ed1975 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Mon, 7 Mar 2022 18:47:14 +0100 Subject: [PATCH 037/577] resolve relative paths, rename pages --- frontend/jest.config.js | 1 + frontend/package.json | 3 -- frontend/src/App.vue | 4 +-- frontend/src/layouts/ContentFooter.vue | 2 +- .../src/layouts/DashboardLayout_gdd.spec.js | 2 +- frontend/src/layouts/DashboardLayout_gdd.vue | 8 +++--- .../AccountOverview/GddTransactionList.vue | 12 ++++---- .../GdtTransactionList.spec.js | 4 +-- .../AccountOverview/GdtTransactionList.vue | 6 ++-- frontend/src/pages/ForgotPassword.vue | 4 +-- frontend/src/pages/Login.spec.js | 2 +- frontend/src/pages/Login.vue | 8 +++--- ...countOverview.spec.js => Overview.spec.js} | 6 ++-- .../{AccountOverview.vue => Overview.vue} | 2 +- ...rofileOverview.spec.js => Profile.spec.js} | 6 ++-- .../{UserProfileOverview.vue => Profile.vue} | 0 frontend/src/pages/Register.spec.js | 2 +- frontend/src/pages/Register.vue | 8 +++--- frontend/src/pages/RegisterCommunity.spec.js | 2 +- frontend/src/pages/RegisterCommunity.vue | 2 +- frontend/src/pages/ResetPassword.spec.js | 2 +- frontend/src/pages/ResetPassword.vue | 4 +-- ...munity.spec.js => SelectCommunity.spec.js} | 10 +++---- ...electCommunity.vue => SelectCommunity.vue} | 4 +-- .../{SendOverview.spec.js => Send.spec.js} | 6 ++-- .../src/pages/{SendOverview.vue => Send.vue} | 2 +- ...ctionList.spec.js => Transactions.spec.js} | 6 ++-- ...leTransactionList.vue => Transactions.vue} | 0 .../UserCard_CoinAnimation.spec.js | 4 +-- .../UserProfile/UserCard_CoinAnimation.vue | 2 +- .../UserProfile/UserCard_FormUserData.spec.js | 2 +- .../UserProfile/UserCard_FormUserData.vue | 2 +- .../UserProfile/UserCard_FormUserMail.vue | 2 +- .../UserCard_FormUserPasswort.spec.js | 2 +- .../UserProfile/UserCard_FormUserPasswort.vue | 6 ++-- .../UserProfile/UserCard_Language.spec.js | 2 +- .../pages/UserProfile/UserCard_Language.vue | 4 +-- .../UserProfile/UserCard_Newsletter.spec.js | 4 +-- .../pages/UserProfile/UserCard_Newsletter.vue | 2 +- frontend/src/routes/router.test.js | 2 +- frontend/src/routes/routes.js | 28 +++++++++---------- 41 files changed, 89 insertions(+), 91 deletions(-) rename frontend/src/pages/{AccountOverview.spec.js => Overview.spec.js} (89%) rename frontend/src/pages/{AccountOverview.vue => Overview.vue} (97%) rename frontend/src/pages/{UserProfileOverview.spec.js => Profile.spec.js} (83%) rename frontend/src/pages/{UserProfileOverview.vue => Profile.vue} (100%) rename frontend/src/pages/{RegisterSelectCommunity.spec.js => SelectCommunity.spec.js} (94%) rename frontend/src/pages/{RegisterSelectCommunity.vue => SelectCommunity.vue} (95%) rename frontend/src/pages/{SendOverview.spec.js => Send.spec.js} (96%) rename frontend/src/pages/{SendOverview.vue => Send.vue} (98%) rename frontend/src/pages/{UserProfileTransactionList.spec.js => Transactions.spec.js} (93%) rename frontend/src/pages/{UserProfileTransactionList.vue => Transactions.vue} (100%) diff --git a/frontend/jest.config.js b/frontend/jest.config.js index 5caae815c..2a52ec707 100644 --- a/frontend/jest.config.js +++ b/frontend/jest.config.js @@ -12,6 +12,7 @@ module.exports = { '\\.(css|less)$': 'identity-obj-proxy', '\\.(scss)$': '/src/assets/mocks/styleMock.js', '^@/(.*)$': '/src/$1', + '^@test/(.*)$': '/test/$1', }, transform: { '^.+\\.vue$': 'vue-jest', diff --git a/frontend/package.json b/frontend/package.json index dcf9baf53..785ebb11d 100755 --- a/frontend/package.json +++ b/frontend/package.json @@ -82,9 +82,6 @@ "vue-template-compiler": "^2.6.11", "webpack-bundle-analyzer": "^4.5.0" }, - "_moduleAliases": { - "@components": "./components" - }, "postcss": { "plugins": { "autoprefixer": {} diff --git a/frontend/src/App.vue b/frontend/src/App.vue index b14f5c8a2..39e417404 100755 --- a/frontend/src/App.vue +++ b/frontend/src/App.vue @@ -10,8 +10,8 @@ diff --git a/frontend/src/pages/ResetPassword.spec.js b/frontend/src/pages/ResetPassword.spec.js index 2230d13c8..04bd11f79 100644 --- a/frontend/src/pages/ResetPassword.spec.js +++ b/frontend/src/pages/ResetPassword.spec.js @@ -4,7 +4,7 @@ import flushPromises from 'flush-promises' import { toastErrorSpy } from '@test/testSetup' -// validation is tested in src/views/Pages/UserProfile/UserCard_FormUserPasswort.spec.js +// validation is tested in src/components/UserCard_FormUserPasswort.spec.js const localVue = global.localVue diff --git a/frontend/src/pages/SelectCommunity.vue b/frontend/src/pages/SelectCommunity.vue index 59650c168..0535e4fe7 100644 --- a/frontend/src/pages/SelectCommunity.vue +++ b/frontend/src/pages/SelectCommunity.vue @@ -52,7 +52,7 @@ import { communities } from '@/graphql/queries' import { getCommunityInfoMixin } from '@/mixins/getCommunityInfo' export default { - name: 'registerSelectCommunity', + name: 'SelectCommunity', data() { return { communities: [], diff --git a/frontend/src/pages/Transactions.vue b/frontend/src/pages/Transactions.vue index f67f23ca3..31094e454 100644 --- a/frontend/src/pages/Transactions.vue +++ b/frontend/src/pages/Transactions.vue @@ -30,7 +30,7 @@ import GddTransactionList from '@/components/GddTransactionList.vue' import GdtTransactionList from '@/components/GdtTransactionList.vue' export default { - name: 'UserProfileTransactionList', + name: 'Transactions', components: { GddTransactionList, GdtTransactionList, diff --git a/frontend/src/routes/guards.test.js b/frontend/src/routes/guards.test.js index d4d2869d4..6079a6136 100644 --- a/frontend/src/routes/guards.test.js +++ b/frontend/src/routes/guards.test.js @@ -41,7 +41,7 @@ describe('navigation guards', () => { }) it('does not commit the pid when not present', async () => { - await router.push({ path: 'password' }) + await router.push({ path: 'forgot-password' }) expect(storeCommitMock).not.toBeCalled() }) }) diff --git a/frontend/src/routes/router.test.js b/frontend/src/routes/router.test.js index 3810f8f4b..665848136 100644 --- a/frontend/src/routes/router.test.js +++ b/frontend/src/routes/router.test.js @@ -1,5 +1,5 @@ import router from './router' -import NotFound from '@/components/NotFoundPage.vue' +import NotFound from '@/pages/NotFoundPage.vue' describe('router', () => { describe('options', () => { @@ -58,7 +58,7 @@ describe('router', () => { expect(routes.find((r) => r.path === '/overview').meta.requiresAuth).toBeTruthy() }) - it('loads the "Overview" component', async () => { + it('loads the "Overview" page', async () => { const component = await routes.find((r) => r.path === '/overview').component() expect(component.default.name).toBe('Overview') }) @@ -69,7 +69,7 @@ describe('router', () => { expect(routes.find((r) => r.path === '/send').meta.requiresAuth).toBeTruthy() }) - it('loads the "Send" component', async () => { + it('loads the "Send" page', async () => { const component = await routes.find((r) => r.path === '/send').component() expect(component.default.name).toBe('Send') }) @@ -80,7 +80,7 @@ describe('router', () => { expect(routes.find((r) => r.path === '/profile').meta.requiresAuth).toBeTruthy() }) - it('loads the "UserProfile" component', async () => { + it('loads the "Profile" page', async () => { const component = await routes.find((r) => r.path === '/profile').component() expect(component.default.name).toBe('Profile') }) @@ -91,30 +91,30 @@ describe('router', () => { expect(routes.find((r) => r.path === '/transactions').meta.requiresAuth).toBeTruthy() }) - it('loads the "UserProfileTransactionList" component', async () => { + it('loads the "Transactions" page', async () => { const component = await routes.find((r) => r.path === '/transactions').component() - expect(component.default.name).toBe('UserProfileTransactionList') + expect(component.default.name).toBe('Transactions') }) }) describe('login', () => { - it('loads the "Login" component', async () => { + it('loads the "Login" page', async () => { const component = await routes.find((r) => r.path === '/login').component() - expect(component.default.name).toBe('login') + expect(component.default.name).toBe('Login') }) }) describe('register', () => { - it('loads the "register" component', async () => { + it('loads the "register" page', async () => { const component = await routes.find((r) => r.path === '/register').component() - expect(component.default.name).toBe('register') + expect(component.default.name).toBe('Register') }) }) describe('thx', () => { const thx = routes.find((r) => r.path === '/thx/:comingFrom') - it('loads the "Thx" component', async () => { + it('loads the "Thx" page', async () => { const component = await thx.component() expect(component.default.name).toBe('Thx') }) @@ -137,14 +137,14 @@ describe('router', () => { }) describe('forgot password', () => { - it('loads the "ForgotPassword" component', async () => { + it('loads the "ForgotPassword" page', async () => { const component = await routes.find((r) => r.path === '/forgot-password').component() expect(component.default.name).toBe('ForgotPassword') }) }) describe('password with param comingFrom', () => { - it('loads the "ForgotPassword" component', async () => { + it('loads the "ForgotPassword" page', async () => { const component = await routes .find((r) => r.path === '/forgot-password/:comingFrom') .component() @@ -153,21 +153,21 @@ describe('router', () => { }) describe('register-community', () => { - it('loads the "registerCommunity" component', async () => { + it('loads the "registerCommunity" page', async () => { const component = await routes.find((r) => r.path === '/register-community').component() - expect(component.default.name).toBe('registerCommunity') + expect(component.default.name).toBe('RegisterCommunity') }) }) describe('select-community', () => { - it('loads the "registerSelectCommunity" component', async () => { + it('loads the "SelectCommunity" page', async () => { const component = await routes.find((r) => r.path === '/select-community').component() - expect(component.default.name).toBe('registerSelectCommunity') + expect(component.default.name).toBe('SelectCommunity') }) }) describe('reset password', () => { - it('loads the "ResetPassword" component', async () => { + it('loads the "ResetPassword" page', async () => { const component = await routes .find((r) => r.path === '/reset-password/:optin') .component() @@ -176,14 +176,14 @@ describe('router', () => { }) describe('checkEmail', () => { - it('loads the "CheckEmail" component', async () => { + it('loads the "CheckEmail" page', async () => { const component = await routes.find((r) => r.path === '/checkEmail/:optin').component() expect(component.default.name).toBe('ResetPassword') }) }) describe('not found page', () => { - it('renders the "NotFound" component', async () => { + it('renders the "NotFound" page', async () => { expect(routes.find((r) => r.path === '*').component).toEqual(NotFound) }) }) diff --git a/frontend/src/routes/routes.js b/frontend/src/routes/routes.js index 3c138cfc9..0909ff531 100755 --- a/frontend/src/routes/routes.js +++ b/frontend/src/routes/routes.js @@ -1,4 +1,4 @@ -import NotFound from '@/components/NotFoundPage.vue' +import NotFound from '@/pages/NotFoundPage.vue' const routes = [ { From 9c246c62bd8b6d8432a932dbbabdc36ead383ece Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Mon, 7 Mar 2022 20:20:54 +0100 Subject: [PATCH 044/577] move user settings in subfolder --- .../UserCoinAnimation.spec.js} | 4 +-- .../UserCoinAnimation.vue} | 2 +- .../UserData.spec.js} | 4 +-- .../UserData.vue} | 2 +- .../UserLanguage.spec.js} | 4 +-- .../UserLanguage.vue} | 2 +- .../UserNewsletter.spec.js} | 4 +-- .../UserNewsletter.vue} | 2 +- .../UserPassword.spec.js} | 4 +-- .../UserPassword.vue} | 2 +- frontend/src/pages/Profile.spec.js | 20 +++++++++---- frontend/src/pages/Profile.vue | 30 +++++++++---------- frontend/src/routes/routes.js | 2 +- 13 files changed, 45 insertions(+), 37 deletions(-) rename frontend/src/components/{UserCard_CoinAnimation.spec.js => UserSettings/UserCoinAnimation.spec.js} (96%) rename frontend/src/components/{UserCard_CoinAnimation.vue => UserSettings/UserCoinAnimation.vue} (98%) rename frontend/src/components/{UserCard_FormUserData.spec.js => UserSettings/UserData.spec.js} (97%) rename frontend/src/components/{UserCard_FormUserData.vue => UserSettings/UserData.vue} (99%) rename frontend/src/components/{UserCard_Language.spec.js => UserSettings/UserLanguage.spec.js} (97%) rename frontend/src/components/{UserCard_Language.vue => UserSettings/UserLanguage.vue} (99%) rename frontend/src/components/{UserCard_Newsletter.spec.js => UserSettings/UserNewsletter.spec.js} (96%) rename frontend/src/components/{UserCard_Newsletter.vue => UserSettings/UserNewsletter.vue} (98%) rename frontend/src/components/{UserCard_FormUserPasswort.spec.js => UserSettings/UserPassword.spec.js} (98%) rename frontend/src/components/{UserCard_FormUserPasswort.vue => UserSettings/UserPassword.vue} (99%) diff --git a/frontend/src/components/UserCard_CoinAnimation.spec.js b/frontend/src/components/UserSettings/UserCoinAnimation.spec.js similarity index 96% rename from frontend/src/components/UserCard_CoinAnimation.spec.js rename to frontend/src/components/UserSettings/UserCoinAnimation.spec.js index 92c2f2b54..aabf927fb 100644 --- a/frontend/src/components/UserCard_CoinAnimation.spec.js +++ b/frontend/src/components/UserSettings/UserCoinAnimation.spec.js @@ -1,5 +1,5 @@ import { mount } from '@vue/test-utils' -import UserCardCoinAnimation from './UserCard_CoinAnimation' +import UserCoinAnimation from './UserCoinAnimation' import { updateUserInfos } from '@/graphql/mutations' import { toastErrorSpy, toastSuccessSpy } from '@test/testSetup' @@ -28,7 +28,7 @@ describe('UserCard_CoinAnimation', () => { } const Wrapper = () => { - return mount(UserCardCoinAnimation, { localVue, mocks }) + return mount(UserCoinAnimation, { localVue, mocks }) } describe('mount', () => { diff --git a/frontend/src/components/UserCard_CoinAnimation.vue b/frontend/src/components/UserSettings/UserCoinAnimation.vue similarity index 98% rename from frontend/src/components/UserCard_CoinAnimation.vue rename to frontend/src/components/UserSettings/UserCoinAnimation.vue index 19a082e41..e73ddb7af 100644 --- a/frontend/src/components/UserCard_CoinAnimation.vue +++ b/frontend/src/components/UserSettings/UserCoinAnimation.vue @@ -33,7 +33,7 @@ From 2e75ceb73e4ce580b7c96ed4a8a24442065c3f12 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Tue, 8 Mar 2022 07:35:34 +0100 Subject: [PATCH 067/577] remove unnecesesary divs --- .../DecayInformation-DecayStartblock.vue | 16 ++++------------ .../DecayInformations/DecayInformation-Long.vue | 16 ++++------------ 2 files changed, 8 insertions(+), 24 deletions(-) diff --git a/frontend/src/components/DecayInformations/DecayInformation-DecayStartblock.vue b/frontend/src/components/DecayInformations/DecayInformation-DecayStartblock.vue index 9bde154ae..6f7e3f466 100644 --- a/frontend/src/components/DecayInformations/DecayInformation-DecayStartblock.vue +++ b/frontend/src/components/DecayInformations/DecayInformation-DecayStartblock.vue @@ -33,24 +33,16 @@ {{ $t(`decay.${typeId.toLowerCase()}`) }} - -

- + {{ amount | GDD }} - -
{{ $t('decay.decay') }}
-
- -
{{ decay.decay | GDD }}
-
+ {{ $t('decay.decay') }} + {{ decay.decay | GDD }}
- -
{{ $t('decay.total') }}
-
+ {{ $t('decay.total') }} {{ (Number(amount) + Number(decay.decay)) | GDD }} diff --git a/frontend/src/components/DecayInformations/DecayInformation-Long.vue b/frontend/src/components/DecayInformations/DecayInformation-Long.vue index fad50ddab..6a0b6a1c1 100644 --- a/frontend/src/components/DecayInformations/DecayInformation-Long.vue +++ b/frontend/src/components/DecayInformations/DecayInformation-Long.vue @@ -34,9 +34,7 @@
{{ $t('decay.decay') }}
- -
{{ decay.decay | GDD }}
-
+ {{ decay.decay | GDD }}

@@ -47,18 +45,12 @@ {{ $t(`decay.${typeId.toLowerCase()}`) }} - -
{{ amount | GDD }}
-
+ {{ amount | GDD }}
- -
{{ $t('decay.decay') }}
-
- -
{{ decay.decay | GDD }}
-
+ {{ $t('decay.decay') }} + {{ decay.decay | GDD }}
From eafa00b3bf9ed352baeb7af732422cd2e4a2b7dd Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Tue, 8 Mar 2022 07:37:28 +0100 Subject: [PATCH 068/577] less divs --- .../DecayInformation-DecayStartblock.vue | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/frontend/src/components/DecayInformations/DecayInformation-DecayStartblock.vue b/frontend/src/components/DecayInformations/DecayInformation-DecayStartblock.vue index 6f7e3f466..2ee9ecc2c 100644 --- a/frontend/src/components/DecayInformations/DecayInformation-DecayStartblock.vue +++ b/frontend/src/components/DecayInformations/DecayInformation-DecayStartblock.vue @@ -17,12 +17,8 @@ - -
{{ $t('decay.decay') }}
-
- -
{{ decay.decay | GDD }}
-
+ {{ $t('decay.decay') }} + {{ decay.decay | GDD }}

From 680d43b2cd91cd99ac532522efc3d42d8020c103 Mon Sep 17 00:00:00 2001 From: ogerly Date: Tue, 8 Mar 2022 09:41:05 +0100 Subject: [PATCH 069/577] community name in creation transaction is displayed cleanly --- frontend/src/components/Transactions/TransactionCreation.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/components/Transactions/TransactionCreation.vue b/frontend/src/components/Transactions/TransactionCreation.vue index 69d1b8b13..891d1dd28 100644 --- a/frontend/src/components/Transactions/TransactionCreation.vue +++ b/frontend/src/components/Transactions/TransactionCreation.vue @@ -31,7 +31,7 @@
- {{ $t('decay.decay_since_last_transaction') }} + {{ linkedUser.firstName + ' ' + linkedUser.lastName }}
From 18534f3179b5d01ac4dcc2fd818a470d79ce8c8e Mon Sep 17 00:00:00 2001 From: ogerly Date: Tue, 8 Mar 2022 11:08:30 +0100 Subject: [PATCH 070/577] add first form version send gdd per link, add locales, add extra submit button --- frontend/src/locales/de.json | 9 +++ frontend/src/locales/en.json | 9 +++ frontend/src/views/Pages/SendOverview.vue | 4 ++ .../SendOverview/GddSend/TransactionForm.vue | 57 ++++++++++++++++++- 4 files changed, 78 insertions(+), 1 deletion(-) diff --git a/frontend/src/locales/de.json b/frontend/src/locales/de.json index 748bffe25..4fcde6f94 100644 --- a/frontend/src/locales/de.json +++ b/frontend/src/locales/de.json @@ -67,6 +67,7 @@ "email": "E-Mail", "firstname": "Vorname", "from": "Von", + "generate_now": "jetzt generieren", "lastname": "Nachname", "memo": "Nachricht", "message": "Nachricht", @@ -99,6 +100,14 @@ }, "your_amount": "Dein Betrag" }, + "gdd_per_link": { + "header": "Gradidos verschenken per Link", + "sentence_1":"Wähle einen Betrag, aus welchen du per Link verschenken möchtest. Du kannst auch noch eine Nachricht eintragen. Beim Klick „jetzt generieren“ wird ein Link erstellt, den du versenden kannst.", + "sentence_2":"Der Link ist 14 Tage gültig!", + "sentence_3":"Wird der Link nicht innerhalb der 14 Tage Frist abgerufen, wird er automatisch gelöscht. Der Betrag wird dann wieder deinem Konto gutgeschrieben.", + "sentence_4":"Wer den Link klick aktiviert, erhält die Zahlung von deinem Konto. Wer noch nicht Mitglied bei Gradido ist, wird durch den Registrierungsprozess geleitet und bekommt den GDD Betrag nach Registrierung / Bestätigung seines Gradido Kontos gut geschrieben.", + "sentence_5":"Der Vergänglichkeitsbetrag wird von dir getragen und für die maximale Gültigkeit deinem Betrag aufgerechnet. Dir wird aber nur der Betrag als Vergänglichkeit berechnet, je nachdem wie viel Tage bis zum Einlösen des Links vergangen sind. Der Restbetrag wird dir wieder zurückerstattet." + }, "gdt": { "action": "Aktion", "calculation": "Berechnung der GradidoTransform", diff --git a/frontend/src/locales/en.json b/frontend/src/locales/en.json index 557c0a42c..d00a93c33 100644 --- a/frontend/src/locales/en.json +++ b/frontend/src/locales/en.json @@ -67,6 +67,7 @@ "email": "Email", "firstname": "Firstname", "from": "from", + "generate_now": "Generate now", "lastname": "Lastname", "memo": "Message", "message": "Message", @@ -98,6 +99,14 @@ "usernmae-unique": "This username is already taken." }, "your_amount": "Your amount" + }, + "gdd_per_link": { + "header": "Give away Gradidos by link", + "satz_1":"Select an amount that you would like to give away via a link. You can also enter a message. Click 'Generate now' to create a link that you can send.", + "sentence_2":"The link is valid for 14 days!", + "sentence_3":"If the link is not called up within the 14-day period, it will be deleted automatically. The amount will then be credited to your account.", + "sentence_4":"Whoever activates the link will receive the payment from your account. If you are not yet a member of Gradido, you will be guided through the registration process and will get the GDD amount credited to your account after registration / confirmation of your Gradido account.", + "sentence_5":"The transience amount will be borne by you and will be added to your amount for the maximum validity. However, you will only be charged the amount as transience depending on how many days have passed until the link is redeemed. The remaining amount will be refunded to you." }, "gdt": { "action": "Action", diff --git a/frontend/src/views/Pages/SendOverview.vue b/frontend/src/views/Pages/SendOverview.vue index d247e1bbe..adb6e8a25 100644 --- a/frontend/src/views/Pages/SendOverview.vue +++ b/frontend/src/views/Pages/SendOverview.vue @@ -76,6 +76,10 @@ export default { this.transactionData = { ...data } this.currentTransactionStep = 1 }, + setTransactionPerLink(data) { + this.transactionData = { ...data } + this.currentTransactionStep = 1 + }, async sendTransaction() { this.loading = true this.error = false diff --git a/frontend/src/views/Pages/SendOverview/GddSend/TransactionForm.vue b/frontend/src/views/Pages/SendOverview/GddSend/TransactionForm.vue index 0f5650543..724d59bf2 100644 --- a/frontend/src/views/Pages/SendOverview/GddSend/TransactionForm.vue +++ b/frontend/src/views/Pages/SendOverview/GddSend/TransactionForm.vue @@ -10,9 +10,47 @@