{{
- t('ecloud-accounts', 'We are going to proceed with your cloud account suppression.')
+ t(appName, 'We are going to proceed with your cloud account suppression.')
}}
-
+
{{
- t('ecloud-accounts', 'Check the box below if you also want to delete the associated shop account(s).')
+ t(appName, 'Check the box below if you also want to delete the associated shop account(s).')
}}
@@ -82,13 +82,21 @@ export default {
shopEmailDefault: loadState(APPLICATION_NAME, 'shop_email_post_delete'),
appName: APPLICATION_NAME,
userEmail: loadState(APPLICATION_NAME, 'email'),
- orderCount: 0,
- subscriptionCount: 0,
loading: true,
showError: false,
allowDelete: true,
}
},
+ computed: {
+ hasActiveSubscription() {
+ for (let index = 0; index < this.shopUsers.length; index++) {
+ if (this.shopUsers[index].has_active_subscription) {
+ return true
+ }
+ }
+ return false
+ }
+ },
mounted() {
this.getShopUsers()
},
@@ -99,18 +107,6 @@ export default {
async disableOrEnableDeleteAccount() {
if (this.shopUsers.length > 0 && !this.deleteShopAccount) {
this.disableDeleteAccountEvent()
- let hasActiveSubscription = false
- for (let i = 0; i < this.shopUsers.length; i++) {
- if (this.shopUsers[i].has_active_subscription) {
- hasActiveSubscription = true
- break
- }
- }
- if (hasActiveSubscription) {
- this.allowDelete = false
- return
- }
-
const status = await this.checkShopEmailPostDelete()
if (status === 200) {
this.enableDeleteAccountEvent()
@@ -143,29 +139,16 @@ export default {
const url = generateUrl(
`/apps/${this.appName}/shop-accounts/users`
)
- const { status, data } = await Axios.get(url)
- if (status === 200) {
- this.shopUsers = data
- }
- if (status === 400) {
- this.enableDeleteAccountEvent()
- }
+ const { data } = await Axios.get(url)
+ this.shopUsers = data
+ this.loading = false
} catch (e) {
- }
- },
- async getOrdersInfo() {
- try {
- const url = generateUrl(
- `/apps/${this.appName}/shop-accounts/order_info?user=${this.shopUser.id}`
+ this.disableDeleteAccountEvent()
+ showError(
+ t(APPLICATION_NAME, 'Temporary error contacting murena.com; please try again later!')
)
- const { status, data } = await Axios.get(url)
- if (status === 200) {
- this.orderCount = data.order_count
- if (this.orderCount) {
- this.ordersDescription = this.ordersDescription.replace('%d', this.orderCount).replace('%s', data.my_orders_url)
- }
- }
- } catch (e) {
+ this.allowDelete = false
+ this.loading = false
}
},
async updateDeleteShopPreference() {
@@ -179,12 +162,12 @@ export default {
})
if (status !== 200) {
showError(
- t('ecloud-accounts', 'Error while setting shop delete preference')
+ t(APPLICATION_NAME, 'Error while setting shop delete preference')
)
}
} catch (e) {
showError(
- t('ecloud-accounts', 'Error while setting shop delete preference')
+ t(APPLICATION_NAME, 'Error while setting shop delete preference')
)
}
},
@@ -208,7 +191,7 @@ export default {
if (this.shopEmailPostDelete === this.userEmail) {
showError(
t(
- 'ecloud-accounts',
+ APPLICATION_NAME,
"Murena.com email cannot be same as this account's email."
)
)
@@ -218,7 +201,7 @@ export default {
this.disableDeleteAccountEvent()
showError(
t(
- 'ecloud-accounts',
+ APPLICATION_NAME,
data.message
)
)
--
GitLab
From 90d5712cf7611f796a852c0ec249c7f6c261bf38 Mon Sep 17 00:00:00 2001
From: Akhil
Date: Mon, 29 May 2023 18:05:32 +0530
Subject: [PATCH 05/31] Fix filenames for build
---
lib/Settings/DeleteShopAccountSetting.php | 2 +-
src/{delete-shop-account.js => delete-shop-account-setting.js} | 0
webpack.config.js | 2 +-
3 files changed, 2 insertions(+), 2 deletions(-)
rename src/{delete-shop-account.js => delete-shop-account-setting.js} (100%)
diff --git a/lib/Settings/DeleteShopAccountSetting.php b/lib/Settings/DeleteShopAccountSetting.php
index c680792e..5d032a9a 100644
--- a/lib/Settings/DeleteShopAccountSetting.php
+++ b/lib/Settings/DeleteShopAccountSetting.php
@@ -44,7 +44,7 @@ class DeleteShopAccountSetting implements ISettings {
public function getForm(): TemplateResponse {
$user = $this->userSession->getUser();
if ($user) {
- $this->util->addScript($this->appName, $this->appName.'-personal-settings');
+ $this->util->addScript($this->appName, $this->appName.'-delete-shop-account-setting');
$this->util->addScript($this->appName, $this->appName.'-delete-account-listeners');
$deleteShopAccount = $this->shopAccountService->getShopDeletePreference($user->getUID());
$shopEmailPostDelete = $this->shopAccountService->getShopEmailPostDeletePreference($user->getUID());
diff --git a/src/delete-shop-account.js b/src/delete-shop-account-setting.js
similarity index 100%
rename from src/delete-shop-account.js
rename to src/delete-shop-account-setting.js
diff --git a/webpack.config.js b/webpack.config.js
index 0868492d..b2b5fbb0 100644
--- a/webpack.config.js
+++ b/webpack.config.js
@@ -6,7 +6,7 @@ const path = require('path')
module.exports = {
...webpackConfig,
entry: {
- 'delete-shop-account-settings': path.join(__dirname, 'src/delete-shop-account.js'),
+ 'delete-shop-account-setting': path.join(__dirname, 'src/delete-shop-account-setting.js'),
'delete-account-listeners': path.join(__dirname, 'src/delete-account-listeners.js'),
'beta-user-setting': path.join(__dirname, 'src/beta-user-setting.js'),
},
--
GitLab
From 11db9c64c8a9970c3e48facf48a142eaa8bdc563 Mon Sep 17 00:00:00 2001
From: Akhil
Date: Mon, 29 May 2023 18:11:13 +0530
Subject: [PATCH 06/31] Remove removed routes
---
appinfo/routes.php | 2 --
1 file changed, 2 deletions(-)
diff --git a/appinfo/routes.php b/appinfo/routes.php
index 7440a10b..aedd9131 100644
--- a/appinfo/routes.php
+++ b/appinfo/routes.php
@@ -6,8 +6,6 @@ return ['routes' => [
['name' => 'user#set_mail_quota_usage', 'url' => '/api/set_mail_quota_usage', 'verb' => 'POST'],
['name' => 'shop_account#set_shop_email_post_delete', 'url' => '/shop-accounts/set_shop_email_post_delete', 'verb' => 'POST' ],
['name' => 'shop_account#set_shop_delete_preference', 'url' => '/shop-accounts/set_shop_delete_preference', 'verb' => 'POST' ],
- ['name' => 'shop_account#get_order_info', 'url' => '/shop-accounts/order_info', 'verb' => 'GET'],
- ['name' => 'shop_account#get_subscription_info', 'url' => '/shop-accounts/subscription_info', 'verb' => 'GET'],
['name' => 'shop_account#get_shop_users', 'url' => '/shop-accounts/users', 'verb' => 'GET'],
['name' => 'shop_account#check_shop_email_post_delete', 'url' => '/shop-accounts/check_shop_email_post_delete', 'verb' => 'GET'],
[
--
GitLab
From 7cac02b980c769c6a0671f3ca4b54746d0e435a1 Mon Sep 17 00:00:00 2001
From: Akhil
Date: Mon, 29 May 2023 18:20:52 +0530
Subject: [PATCH 07/31] Temporarily add staging deploy to gitlab CI file
---
.gitlab-ci.yml | 47 ++++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 46 insertions(+), 1 deletion(-)
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 6119917f..715b5f1c 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,5 +1,10 @@
variables:
- TO_PACKAGE: 'appinfo l10n lib templates js img'
+ CONTAINER_IMAGE: ubuntu
+ CONTAINER_TAG: focal
+ CONTAINER_NAME: nextcloud
+ APP_NAME: $CI_PROJECT_NAME
+ APP_ENABLE_ARGS: ''
+ TO_PACKAGE: 'appinfo l10n lib templates js img'
include:
- project: "e/infra/ecloud/nextcloud-apps/ci-templates"
ref: main
@@ -7,3 +12,43 @@ include:
- project: "e/infra/ecloud/nextcloud-apps/ci-templates"
ref: main
file: "nc-apps-deploy.yml"
+
+.deploy:nextcloud-app:
+ stage: deploy
+ # assuming all deployment will happen with sames image
+ image: $CONTAINER_IMAGE:$CONTAINER_TAG
+ # assuming we will need to add SSH for all deployment
+ before_script:
+ - echo "FAIL" > .job_status
+ - mkdir $HOME/.ssh
+ - chmod 700 ~/.ssh
+ - echo "$SSH_PRIVATE_KEY_ED" > $HOME/.ssh/id_ed25519
+ - echo "$SSH_PUBKEY_ED" > $HOME/.ssh/id_ed25519.pub
+ - echo "$SSH_KNOWN_HOSTS" > $HOME/.ssh/known_hosts
+ - chmod 600 ~/.ssh/id_ed25519
+ - chmod 644 ~/.ssh/known_hosts ~/.ssh/id_ed25519.pub
+ - apt-get update && apt-get install -y openssh-client rsync
+ script:
+ - echo "Deploying ${APP_NAME} to $CI_ENVIRONMENT_NAME ($DEPLOYMENT_HOST)"
+ - rsync -avzh dist/ $SSH_USER@$DEPLOYMENT_HOST:/tmp/${CI_JOB_ID}
+ - ssh $SSH_USER@$DEPLOYMENT_HOST "sudo docker exec -u www-data $CONTAINER_NAME /usr/local/bin/php /var/www/html/occ app:disable ${APP_NAME} &&
+ sudo rsync -avzh --chown www-data:www-data --delete /tmp/${CI_JOB_ID}/${APP_NAME} ${DEPLOYMENT_PATH}/html/custom_apps/ &&
+ sudo docker exec -u www-data $CONTAINER_NAME /usr/local/bin/php /var/www/html/occ app:enable ${APP_ENABLE_ARGS} ${APP_NAME}"
+ - echo "SUCCESS" > .job_status
+ after_script:
+ # reading job status, checking it and implementing additional steps
+ # are not handled here as rm -rf /tmp/${CI_JOB_ID} will always execute
+ - ssh $SSH_USER@$DEPLOYMENT_HOST "rm -rf /tmp/${CI_JOB_ID}"
+
+deploy:staging:
+ extends: .deploy:nextcloud-app
+ when: manual
+ only:
+ - main
+ - murena-main
+ - production
+ - dev/us-shop-api-calls
+ - tags
+ environment:
+ name: staging/01
+ url: https://eeo.one
--
GitLab
From d2fe9d7a4f8b00cccbb8ad1e761efa7c9cecae7a Mon Sep 17 00:00:00 2001
From: Akhil
Date: Mon, 29 May 2023 18:22:15 +0530
Subject: [PATCH 08/31] Fix PHP lint
---
lib/Service/ShopAccountService.php | 5 +----
lib/Settings/DeleteShopAccountSetting.php | 1 -
2 files changed, 1 insertion(+), 5 deletions(-)
diff --git a/lib/Service/ShopAccountService.php b/lib/Service/ShopAccountService.php
index c8be3bff..929bc04c 100644
--- a/lib/Service/ShopAccountService.php
+++ b/lib/Service/ShopAccountService.php
@@ -7,7 +7,6 @@ use Exception;
use OCP\IConfig;
use OCP\ILogger;
use OCA\EcloudAccounts\AppInfo\Application;
-use OCA\EcloudAccounts\Service\CurlService;
class ShopAccountService {
private IConfig $config;
@@ -77,7 +76,7 @@ class ShopAccountService {
}
$user = $usersFromThisShop[0];
$user['my_orders_url'] = $shop['url'] . self::MY_ORDERS_URL;
- $users[] = $usersFromThisShop[0];
+ $users[] = $usersFromThisShop[0];
}
return $users;
@@ -165,6 +164,4 @@ class ShopAccountService {
return $answer;
}
-
-
}
diff --git a/lib/Settings/DeleteShopAccountSetting.php b/lib/Settings/DeleteShopAccountSetting.php
index 5d032a9a..c79416a7 100644
--- a/lib/Settings/DeleteShopAccountSetting.php
+++ b/lib/Settings/DeleteShopAccountSetting.php
@@ -52,7 +52,6 @@ class DeleteShopAccountSetting implements ISettings {
$this->initialState->provideInitialState('email', $user->getEMailAddress());
$this->initialState->provideInitialState('delete_shop_account', $deleteShopAccount);
$this->initialState->provideInitialState('shop_email_post_delete', $shopEmailPostDelete);
-
}
return new TemplateResponse($this->appName, 'personal');
--
GitLab
From 9492e0128ebcb3dfe87e75e425f3fcbc06c33229 Mon Sep 17 00:00:00 2001
From: Akhil
Date: Mon, 29 May 2023 19:18:47 +0530
Subject: [PATCH 09/31] Handle deletion of multiple accounts
---
lib/Listeners/BeforeUserDeletedListener.php | 18 +++++++++--------
lib/Service/ShopAccountService.php | 22 +++++++++++----------
2 files changed, 22 insertions(+), 18 deletions(-)
diff --git a/lib/Listeners/BeforeUserDeletedListener.php b/lib/Listeners/BeforeUserDeletedListener.php
index 9b87f22a..70f5a14a 100644
--- a/lib/Listeners/BeforeUserDeletedListener.php
+++ b/lib/Listeners/BeforeUserDeletedListener.php
@@ -60,14 +60,16 @@ class BeforeUserDeletedListener implements IEventListener {
}
$deleteShopAccount = $this->shopAccountService->getShopDeletePreference($uid);
- $shopUser = $this->shopAccountService->getUser($email);
-
- if ($shopUser && $this->shopAccountService->isUserOIDC($shopUser)) {
- if ($deleteShopAccount) {
- $this->shopAccountService->deleteUser($shopUser['id']);
- } else {
- $newEmail = $this->shopAccountService->getShopEmailPostDeletePreference($uid);
- $newEmail = $this->shopAccountService->updateUserEmailAndEmptyOIDC($shopUser['id'], $newEmail);
+ $shopUsers = $this->shopAccountService->getUsers($email);
+
+ if (!empty($shopUsers)) {
+ foreach($shopUsers as $shopUser) {
+ if ($deleteShopAccount) {
+ $this->shopAccountService->deleteUser($shopUser['shop_url'], $shopUser['id']);
+ } else {
+ $newEmail = $this->shopAccountService->getShopEmailPostDeletePreference($uid);
+ $newEmail = $this->shopAccountService->updateUserEmailAndEmptyOIDC($shopUser['shop_url'], $shopUser['id'], $newEmail);
+ }
}
}
}
diff --git a/lib/Service/ShopAccountService.php b/lib/Service/ShopAccountService.php
index 929bc04c..74570b31 100644
--- a/lib/Service/ShopAccountService.php
+++ b/lib/Service/ShopAccountService.php
@@ -15,7 +15,7 @@ class ShopAccountService {
private ILogger $logger;
private array $shops = [];
- private const OIDC_USERS_ENDPOINT = '/wp-json/wp/v2/users/get_oidc_user_by_email';
+ private const OIDC_USERS_ENDPOINT = '/wp-json/openid-connect-generic/users/get_by_email';
private const USERS_ENDPOINT = '/wp-json/wp/v2/users';
private const MY_ORDERS_URL = '/my-account/orders';
@@ -70,13 +70,11 @@ class ShopAccountService {
try {
$users = [];
foreach ($this->shops as $shop) {
- $usersFromThisShop = $this->callShopAPI($shop, self::OIDC_USERS_ENDPOINT, 'GET', ['email' => $email]);
- if (empty($usersFromThisShop)) {
+ $user = $this->getUser($shop, $email);
+ if (empty($user)) {
continue;
}
- $user = $usersFromThisShop[0];
- $user['my_orders_url'] = $shop['url'] . self::MY_ORDERS_URL;
- $users[] = $usersFromThisShop[0];
+ $users[] = $user;
}
return $users;
@@ -85,12 +83,16 @@ class ShopAccountService {
}
}
- public function getUser(string $email) : ?array {
- $users = $this->getUsers($email);
- if (empty($users)) {
+ public function getUser(array $shop, string $email) : ?array {
+
+ $user = $this->callShopAPI($shop, self::OIDC_USERS_ENDPOINT, 'GET', ['email' => $email]);
+ if(empty($user)) {
return null;
}
- return $users[0];
+ $user['shop_url'] = $shop['url'];
+ $user['my_orders_url'] = $shop['url'] . self::MY_ORDERS_URL;
+
+ return $user;
}
public function deleteUser(string $shopUrl, int $userId) : void {
--
GitLab
From 45d394a4167334625049316aca840aee23167551 Mon Sep 17 00:00:00 2001
From: Akhil
Date: Mon, 29 May 2023 19:19:02 +0530
Subject: [PATCH 10/31] Fix lint again
---
lib/Listeners/BeforeUserDeletedListener.php | 2 +-
lib/Service/ShopAccountService.php | 3 +--
2 files changed, 2 insertions(+), 3 deletions(-)
diff --git a/lib/Listeners/BeforeUserDeletedListener.php b/lib/Listeners/BeforeUserDeletedListener.php
index 70f5a14a..c69120df 100644
--- a/lib/Listeners/BeforeUserDeletedListener.php
+++ b/lib/Listeners/BeforeUserDeletedListener.php
@@ -63,7 +63,7 @@ class BeforeUserDeletedListener implements IEventListener {
$shopUsers = $this->shopAccountService->getUsers($email);
if (!empty($shopUsers)) {
- foreach($shopUsers as $shopUser) {
+ foreach ($shopUsers as $shopUser) {
if ($deleteShopAccount) {
$this->shopAccountService->deleteUser($shopUser['shop_url'], $shopUser['id']);
} else {
diff --git a/lib/Service/ShopAccountService.php b/lib/Service/ShopAccountService.php
index 74570b31..32f99f77 100644
--- a/lib/Service/ShopAccountService.php
+++ b/lib/Service/ShopAccountService.php
@@ -84,9 +84,8 @@ class ShopAccountService {
}
public function getUser(array $shop, string $email) : ?array {
-
$user = $this->callShopAPI($shop, self::OIDC_USERS_ENDPOINT, 'GET', ['email' => $email]);
- if(empty($user)) {
+ if (empty($user)) {
return null;
}
$user['shop_url'] = $shop['url'];
--
GitLab
From 3b4ef0331eff514bad14b62be4e68ca5c1aeded5 Mon Sep 17 00:00:00 2001
From: Akhil
Date: Mon, 29 May 2023 23:23:06 +0530
Subject: [PATCH 11/31] Fix listeners
---
lib/Service/ShopAccountService.php | 9 +++++++--
src/delete-account-listeners.js | 16 +++++++++-------
2 files changed, 16 insertions(+), 9 deletions(-)
diff --git a/lib/Service/ShopAccountService.php b/lib/Service/ShopAccountService.php
index 32f99f77..c501cbbf 100644
--- a/lib/Service/ShopAccountService.php
+++ b/lib/Service/ShopAccountService.php
@@ -37,7 +37,12 @@ class ShopAccountService {
}
public function shopEmailExists(string $shopEmail) : bool {
- return !empty($this->getUser($shopEmail));
+ foreach ($this->shops as $shop) {
+ if (!empty($this->getUser($shop, $shopEmail))) {
+ return true;
+ }
+ }
+ return false;
}
public function validateShopEmailPostDelete(string $shopEmailPostDelete, string $cloudEmail) : void {
@@ -139,7 +144,7 @@ class ShopAccountService {
if (empty($shop['url'])) {
return [];
}
- $shopCredentials = $shop['username'] . ':' . $shop['password'];
+ $shopCredentials = base64_encode($shop['username'] . ':' . $shop['password']);
$headers = [
"cache-control: no-cache",
"content-type: application/json",
diff --git a/src/delete-account-listeners.js b/src/delete-account-listeners.js
index 6710f7ff..c5cd1719 100644
--- a/src/delete-account-listeners.js
+++ b/src/delete-account-listeners.js
@@ -1,17 +1,19 @@
document.addEventListener('DOMContentLoaded', function() {
+ const checkboxSelector = '#delete-account-settings .checkbox-radio-switch__input'
+ const buttonSelector = '#delete-account-settings .delete-button-wrapper .button-vue'
// Disable initially
- document.getElementById('drop_account_confirm').disabled = true
- document.getElementById('deleteaccount').disabled = true
+ document.querySelector(checkboxSelector).disabled = true
+ document.querySelector(buttonSelector).disabled = true
const elem = document.getElementById('body-settings')
elem.addEventListener('disable-delete-account', function() {
- document.getElementById('deleteaccount').disabled = true
- document.getElementById('drop_account_confirm').disabled = true
+ document.querySelector(checkboxSelector).disabled = true
+ document.querySelector(buttonSelector).disabled = true
})
elem.addEventListener('enable-delete-account', function() {
- document.getElementById('drop_account_confirm').disabled = false
- const enableDeleteAccount = document.getElementById('drop_account_confirm').checked
- document.getElementById('deleteaccount').disabled = !enableDeleteAccount
+ document.querySelector(checkboxSelector).disabled = false
+ const enableDeleteAccount = document.querySelector(checkboxSelector).checked
+ document.getElementById(buttonSelector).disabled = !enableDeleteAccount
})
})
--
GitLab
From a3cdf53e346a28a57d18c4f3c904f1d3a6d0b3ec Mon Sep 17 00:00:00 2001
From: Akhil
Date: Mon, 29 May 2023 23:37:52 +0530
Subject: [PATCH 12/31] Remove check the box below msg for active subscriptions
---
src/DeleteShopAccountSetting.vue | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/DeleteShopAccountSetting.vue b/src/DeleteShopAccountSetting.vue
index 53cf7e1c..94168154 100644
--- a/src/DeleteShopAccountSetting.vue
+++ b/src/DeleteShopAccountSetting.vue
@@ -5,7 +5,7 @@
{{
t(appName, 'We are going to proceed with your cloud account suppression.')
}}
-
+
{{
t(appName, 'Check the box below if you also want to delete the associated shop account(s).')
}}
--
GitLab
From 260be5b78bf2c575035c294446826766aa048578 Mon Sep 17 00:00:00 2001
From: Akhil
Date: Tue, 30 May 2023 00:00:54 +0530
Subject: [PATCH 13/31] Add translation for edge case of multiple shop accounts
in diff continents
---
l10n/de.js | 1 +
l10n/de.json | 1 +
l10n/en.js | 3 ++
l10n/en.json | 1 +
l10n/es.js | 1 +
l10n/es.json | 1 +
l10n/fr.js | 1 +
l10n/fr.json | 1 +
l10n/it.js | 1 +
l10n/it.json | 1 +
src/DeleteShopAccountSetting.vue | 38 ++++++++++++++++++++-----
src/components/ShopUserOrders.vue | 46 -------------------------------
12 files changed, 43 insertions(+), 53 deletions(-)
delete mode 100644 src/components/ShopUserOrders.vue
diff --git a/l10n/de.js b/l10n/de.js
index d6e8e051..2277d098 100644
--- a/l10n/de.js
+++ b/l10n/de.js
@@ -6,6 +6,7 @@ OC.L10N.register(
"We are going to proceed with your cloud account suppression.": "Wir werden mit der Löschung Ihres Cloud-Kontos fortfahren.",
"Check the box below if you also want to delete the associated shop account.": "Markieren Sie das Kästchen unten, wenn Sie auch das zugehörige Shop-Konto löschen möchten.",
"For your information you have %d order(s) in your account.": "Zu Ihrer Information: Sie haben %d Auftrag(e) in Ihrem Konto.",
+ "For your information you have %d order(s) in your accounts: ": "Zu Ihrer Information: Sie haben %d Auftrag(e) in Ihre Konten: ",
"I also want to delete my shop account": "Ich möchte auch mein Shop-Konto löschen",
"If you want to keep your shop account please validate or modify the email address below. This email address will become your new login to the shop. ": "Wenn Sie Ihr Shop-Konto behalten möchten, bestätigen oder ändern Sie bitte die E-Mail-Adresse unten. Diese E-Mail-Adresse wird Ihr neues Login für den Shop sein. ",
"Error while setting shop delete preference": "Fehler beim Einstellen der Shop-Löschpräferenz",
diff --git a/l10n/de.json b/l10n/de.json
index f83d4949..8b07959d 100644
--- a/l10n/de.json
+++ b/l10n/de.json
@@ -5,6 +5,7 @@
"We are going to proceed with your cloud account suppression.": "Wir werden mit der Löschung Ihres Cloud-Kontos fortfahren.",
"Check the box below if you also want to delete the associated shop account.": "Markieren Sie das Kästchen unten, wenn Sie auch das zugehörige Shop-Konto löschen möchten.",
"For your information you have %d order(s) in your account.": "Zu Ihrer Information: Sie haben %d Auftrag(e) in Ihrem Konto.",
+ "For your information you have %d order(s) in your accounts: ": "Zu Ihrer Information: Sie haben %d Auftrag(e) in Ihre Konten: ",
"I also want to delete my shop account": "Ich möchte auch mein Shop-Konto löschen",
"If you want to keep your shop account please validate or modify the email address below. This email address will become your new login to the shop. ": "Wenn Sie Ihr Shop-Konto behalten möchten, bestätigen oder ändern Sie bitte die E-Mail-Adresse unten. Diese E-Mail-Adresse wird Ihr neues Login für den Shop sein. ",
"Error while setting shop delete preference": "Fehler beim Einstellen der Shop-Löschpräferenz",
diff --git a/l10n/en.js b/l10n/en.js
index af35aee2..f161a527 100644
--- a/l10n/en.js
+++ b/l10n/en.js
@@ -1,3 +1,5 @@
+/* eslint-disable quote-props */
+/* eslint-disable quotes */
OC.L10N.register(
"ecloud-accounts",
{
@@ -6,6 +8,7 @@ OC.L10N.register(
"We are going to proceed with your cloud account suppression.": "We are going to proceed with your cloud account suppression.",
"Check the box below if you also want to delete the associated shop account.": "Check the box below if you also want to delete the associated shop account.",
"For your information you have %d order(s) in your account.": "For your information you have %d order(s) in your account.",
+ "For your information you have %d order(s) in your accounts: ": "For your information you have %d order(s) in your account: ",
"I also want to delete my shop account": "I also want to delete my shop account",
"If you want to keep your shop account please validate or modify the email address below. This email address will become your new login to the shop. ": "If you want to keep your shop account please validate or modify the email address below. This email address will become your new login to the shop. ",
"Error while setting shop delete preference": "Error while setting shop delete preference",
diff --git a/l10n/en.json b/l10n/en.json
index ea45c326..5036670d 100644
--- a/l10n/en.json
+++ b/l10n/en.json
@@ -5,6 +5,7 @@
"We are going to proceed with your cloud account suppression.": "We are going to proceed with your cloud account suppression.",
"Check the box below if you also want to delete the associated shop account.": "Check the box below if you also want to delete the associated shop account.",
"For your information you have %d order(s) in your account.": "For your information you have %d order(s) in your account.",
+ "For your information you have %d order(s) in your accounts: ": "For your information you have %d order(s) in your account: ",
"I also want to delete my shop account": "I also want to delete my shop account",
"If you want to keep your shop account please validate or modify the email address below. This email address will become your new login to the shop. ": "If you want to keep your shop account please validate or modify the email address below. This email address will become your new login to the shop. ",
"Error while setting shop delete preference": "Error while setting shop delete preference",
diff --git a/l10n/es.js b/l10n/es.js
index e241ca0b..c7dd0a14 100644
--- a/l10n/es.js
+++ b/l10n/es.js
@@ -6,6 +6,7 @@ OC.L10N.register(
"We are going to proceed with your cloud account suppression.": "Vamos a proceder a la supresión de su cuenta en la nube.",
"Check the box below if you also want to delete the associated shop account.": "Marca la casilla de abajo si también quieres eliminar la cuenta de la tienda asociada.",
"For your information you have %d order(s) in your account.": "Para su información tiene %d orden(es) en su cuenta.",
+ "For your information you have %d order(s) in your accounts: ": "Para su información tiene %d orden(es) en sus cuentas: ",
"I also want to delete my shop account": "También quiero borrar mi cuenta de la tienda",
"If you want to keep your shop account please validate or modify the email address below. This email address will become your new login to the shop. ": "Si quieres mantener tu cuenta de la tienda, valida o modifica la dirección de correo electrónico que aparece a continuación. Esta dirección de correo electrónico se convertirá en su nuevo acceso a la tienda. ",
"Error while setting shop delete preference": "Error al configurar la preferencia de eliminación de la tienda",
diff --git a/l10n/es.json b/l10n/es.json
index b92ea244..f9d71400 100644
--- a/l10n/es.json
+++ b/l10n/es.json
@@ -5,6 +5,7 @@
"We are going to proceed with your cloud account suppression.": "Vamos a proceder a la supresión de su cuenta en la nube. ",
"Check the box below if you also want to delete the associated shop account.": "Marca la casilla de abajo si también quieres eliminar la cuenta de la tienda asociada.",
"For your information you have %d order(s) in your account.": "Para su información tiene %d orden(es) en su cuenta.",
+ "For your information you have %d order(s) in your accounts: ": "Para su información tiene %d orden(es) en sus cuentas: ",
"I also want to delete my shop account": "También quiero borrar mi cuenta de la tienda",
"If you want to keep your shop account please validate or modify the email address below. This email address will become your new login to the shop. ": "Si quieres mantener tu cuenta de la tienda, valida o modifica la dirección de correo electrónico que aparece a continuación. Esta dirección de correo electrónico se convertirá en su nuevo acceso a la tienda. ",
"Error while setting shop delete preference": "Error al configurar la preferencia de eliminación de la tienda",
diff --git a/l10n/fr.js b/l10n/fr.js
index 16ef5256..c272123c 100644
--- a/l10n/fr.js
+++ b/l10n/fr.js
@@ -6,6 +6,7 @@ OC.L10N.register(
"We are going to proceed with your cloud account suppression.": "Nous allons procéder à la suppression de votre compte cloud.",
"Check the box below if you also want to delete the associated shop account.": "Cochez la case ci-dessous si vous souhaitez également supprimer le compte boutique associé.",
"For your information you have %d order(s) in your account.": "Pour votre information, vous avez %d ordre(s) en votre compte.",
+ "For your information you have %d order(s) in your accounts: ": "Pour votre information, vous avez %d ordre(s) en vos comptes: ",
"I also want to delete my shop account": "I also want to delete my shop account",
"If you want to keep your shop account please validate or modify the email address below. This email address will become your new login to the shop. ": "Si vous souhaitez conserver votre compte boutique, veuillez valider ou modifier l'adresse e-mail ci-dessous. Cette adresse email deviendra votre nouveau login pour la boutique. ",
"Error while setting shop delete preference": "Erreur lors de la configuration de la préférence de suppression de boutique",
diff --git a/l10n/fr.json b/l10n/fr.json
index 963b412c..7b59c728 100644
--- a/l10n/fr.json
+++ b/l10n/fr.json
@@ -5,6 +5,7 @@
"We are going to proceed with your cloud account suppression.": "Nous allons procéder à la suppression de votre compte cloud.",
"Check the box below if you also want to delete the associated shop account.": "Cochez la case ci-dessous si vous souhaitez également supprimer le compte boutique associé.",
"For your information you have %d order(s) in your account.": "Pour votre information, vous avez %d ordre(s) en votre compte.",
+ "For your information you have %d order(s) in your accounts: ": "Pour votre information, vous avez %d ordre(s) en vos comptes: ",
"I also want to delete my shop account": "I also want to delete my shop account",
"If you want to keep your shop account please validate or modify the email address below. This email address will become your new login to the shop. ": "Si vous souhaitez conserver votre compte boutique, veuillez valider ou modifier l'adresse e-mail ci-dessous. Cette adresse email deviendra votre nouveau login pour la boutique. ",
"Error while setting shop delete preference": "Erreur lors de la configuration de la préférence de suppression de boutique",
diff --git a/l10n/it.js b/l10n/it.js
index 209b447a..bde0b6bc 100644
--- a/l10n/it.js
+++ b/l10n/it.js
@@ -6,6 +6,7 @@ OC.L10N.register(
"We are going to proceed with your cloud account suppression.": "Procederemo con la soppressione dell'account cloud.",
"Check the box below if you also want to delete the associated shop account.": "Selezionare la casella sottostante se si desidera eliminare anche l'account del negozio associato.",
"For your information you have %d order(s) in your account.": "Per vostra informazione, avete %d ordini in il tuo account.",
+ "For your information you have %d order(s) in your accounts: ": "Per vostra informazione, avete %d ordini in i vostri conti: ",
"I also want to delete my shop account": "Voglio anche cancellare il mio account del negozio",
"If you want to keep your shop account please validate or modify the email address below. This email address will become your new login to the shop. ": "Se volete mantenere il vostro account del negozio, convalidate o modificate l'indirizzo e-mail qui sotto. Questo indirizzo e-mail diventerà il vostro nuovo login al negozio. ",
"Error while setting shop delete preference": "Errore durante l'impostazione della preferenza di cancellazione del negozio",
diff --git a/l10n/it.json b/l10n/it.json
index c5af4a7b..22add0ce 100644
--- a/l10n/it.json
+++ b/l10n/it.json
@@ -5,6 +5,7 @@
"We are going to proceed with your cloud account suppression.": "Procederemo con la soppressione dell'account cloud. ",
"Check the box below if you also want to delete the associated shop account.": "Selezionare la casella sottostante se si desidera eliminare anche l'account del negozio associato.",
"For your information you have %d order(s) in your account.": "Per vostra informazione, avete %d ordini in il tuo account.",
+ "For your information you have %d order(s) in your accounts: ": "Per vostra informazione, avete %d ordini in i vostri conti: ",
"I also want to delete my shop account": "Voglio anche cancellare il mio account del negozio",
"If you want to keep your shop account please validate or modify the email address below. This email address will become your new login to the shop. ": "Se volete mantenere il vostro account del negozio, convalidate o modificate l'indirizzo e-mail qui sotto. Questo indirizzo e-mail diventerà il vostro nuovo login al negozio. ",
"Error while setting shop delete preference": "Errore durante l'impostazione della preferenza di cancellazione del negozio",
diff --git a/src/DeleteShopAccountSetting.vue b/src/DeleteShopAccountSetting.vue
index 94168154..64bceb89 100644
--- a/src/DeleteShopAccountSetting.vue
+++ b/src/DeleteShopAccountSetting.vue
@@ -12,10 +12,14 @@
-
+
+
+
+ {{
+ t(appName, 'A subscription is active in this account. Please cancel it or let it expire before deleting your account.')
+ }}
+
+