From a2cc14265a67dfa4db7567165ff6bbb6337b3b51 Mon Sep 17 00:00:00 2001 From: Marco Capetta Date: Tue, 9 May 2023 13:17:12 +0200 Subject: [PATCH] MT#57338 Remove preferences when set to false or empty array value Change-Id: I9b7c296603d21ce46987dd4ede7a9c5aefa363ec --- src/api/subscriber.js | 28 ++++++++++++++---------- src/pages/CscPageCallBlockingPrivacy.vue | 2 +- 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/src/api/subscriber.js b/src/api/subscriber.js index 2693d301..1f1aa62b 100644 --- a/src/api/subscriber.js +++ b/src/api/subscriber.js @@ -35,19 +35,23 @@ export async function getPreferencesDefs (id) { } export async function setPreference (id, field, value) { - try { - await replacePreference(id, field, value) - } catch (err) { - const errCode = err.status + '' - if (errCode === '422') { - // eslint-disable-next-line no-useless-catch - try { - await addPreference(id, field, value) - } catch (innerErr) { - throw innerErr + if (value === undefined || value === null || value === '' || value === false || (Array.isArray(value) && !value.length)) { + await removePreference(id, field) + } else { + try { + await replacePreference(id, field, value) + } catch (err) { + const errCode = err.status + '' + if (errCode === '422') { + // eslint-disable-next-line no-useless-catch + try { + await addPreference(id, field, value) + } catch (innerErr) { + throw innerErr + } + } else { + throw err } - } else { - throw err } } } diff --git a/src/pages/CscPageCallBlockingPrivacy.vue b/src/pages/CscPageCallBlockingPrivacy.vue index 1bf53b70..ea8e2061 100644 --- a/src/pages/CscPageCallBlockingPrivacy.vue +++ b/src/pages/CscPageCallBlockingPrivacy.vue @@ -12,7 +12,7 @@