* Fixes missing translation for "If not available"
in german
* Call back button on the subscriber phonebook
was moved before the more menu
Change-Id: I6daa0623173c0251c2c72149419bc8f122687473
(cherry picked from commit 397d6bdbea)
(cherry picked from commit 331fb34d0b)
Fix default value for CQ part:
If the subscriber has call queue activated, use their wrap-up time
as the default value; otherwise, set the default value to 10.
Change-Id: I1e11417690d4119ce396939721cbc96f6c5ef9b8
(cherry picked from commit 6e1140713d)
(cherry picked from commit 04d06101ea)
- Removed `crypto-browserify` from package.json and quasar.config.js
(unused webpack polyfill that was bundling vulnerable bn.js and
elliptic into the production build)
Bumped up packages:
* glob
* globals
* jest
* @quasar/app-webpack
Yarn resolutions added
- `serialize-javascript: ^7.0.3` — fixes high-severity RCE vulnerability
via RegExp.flags/Date.toISOString() (CVE in terser-webpack-plugin and
@quasar/ssr-helpers paths)
- `**/postcss-svgo/svgo: ^4.0.1` — fixes high-severity Billion Laughs
DoS (XML entity expansion) in cssnano's SVG optimization pipeline
- `dot-object/minimatch: ^3.1.2` — fixes high-severity ReDoS in
dot-object's glob dependency
- `**/flatted: 3.4.0` — fixes high-severity unbounded recursion DoS
in eslint and eslint-webpack-plugin's caching layer
What remains (30 vulnerabilities — all upstream-blocked)
The remaining vulnerabilities are entirely confined to dev-only
tooling and cannot be fixed without upstream releases:
- minimatch ReDoS across jest, @vue/test-utils, jest-serializer-vue,
@quasar/app-webpack, @quasar/quasar-app-extension-testing-unit-jest
- ajv ReDoS across eslint, eslint-webpack-plugin, @quasar/app-webpack
- webpack SSRF (buildHttp feature, not used in this project)
- qs DoS in webpack-dev-server's express (local dev only)
- esbuild dev server CORS issue (local dev only)
- vue-template-compiler XSS (no patch available upstream)
- tmp symlink issue, @tootallnate/once control flow (test tooling only)
Change-Id: I72f34757538f97bb3495a57d7f0263df58102f1e
(cherry picked from commit 1ebe3c0683)
(cherry picked from commit dda9bff6a4)
- Convert all actions from .then()/.catch() chains to async/await
- Extract savePreference() helper to centralise error handling and
state commits, avoiding repetition across every action
- Extract updateBooleanPreference() helper. It covers the following
scenarios:
* new value is false: remove PATCH property in DB
* new value is true: add PATCH property in DB
* new value is true AND the value already exist in the
customer preferences: replace PATCH to amend property in DB
(added to avoid regression introduced by previous code, which
saved a property as false instead of removing it)s
- Add proper add/set/remove logic to updateBlockInList,
updateBlockOutList and updateBlockOutOverridePin: previously all
three always called setCustomerPreference regardless of whether the
preference existed or was empty
- Split logic to add, remove and edit customer preferences
Change-Id: Ie419de31631b9ef1b06653446dfbe1a33a10c225
(cherry picked from commit 58e7a88272)
(cherry picked from commit d2dce51abe)
* Implemented priority flow as sort -> normalize to 0..n-1
across fetch/create/edit/remove
* On creation handles priority incrementally
* On edit, arranges and normalizes (if needed) priority values
* Enforced the same move rules in store action (moveDestination)
to block invalid reorders.
* Removes references to LocalSubscriber
* Fixes unit tests
Change-Id: Ib64cc30ea75141692085ec38df5c528565389469
(cherry picked from commit 38d6e2089c)
(cherry picked from commit 37c34a654f)
The CF to Local Subscriber feature has been removed
in ticket MT#59011 but never deleted from CSC.
Change-Id: I1ed32c4db3e4ee2e0be8ab2218efe0ec48c3a098
(cherry picked from commit 8c51d8f041)
(cherry picked from commit d2606fb853)
- Add filter by name as a default search criteria for subscriber
phonebook
Change-Id: I5248f098d9b5ae9e792222f6e185695aa150e8ab
(cherry picked from commit 45131fd432)
(cherry picked from commit 462199d5cf)
* fix updateSharedValue to be less flacky: it was using
the reference of row, mutated, to make the backend request.
It now use a value stored in a variable.
* amend getList to make sure we pass the default page (1)
when looking for all rows with api v1.
Change-Id: Ia8c4fcb1547c16a6a3e862f864fbc5aecda3e065
(cherry picked from commit 9db53bc3ce)
Our nightly tests flagged the fact that
the feature was unstable and unrealiable.
Changes:
* Extract subscriber phonebook api and state
* Change direct use of http in the sub-phonebook
method to use the relevant method in common.js
* Simplify logic to PATCH single properties
with a unique PUT in the Phonebook entry form
* Amend getList, handleResponseError and
put to allow use with API v2 endpoints
* Amend translations and methods to replace
"phonebook" with "phonebook entry" where
necessary
Change-Id: I189d45fe426a1ded400a251d7efdfa72f76f9061
(cherry picked from commit ff40864da0)
Update axios to version 1.13.5 to fix a
denial‑of‑service issue in mergeConfig when
using malicious config object.
Change-Id: I4c1d2b3de42d7ab854ffaaee07e30fcb98d4cadc
(cherry picked from commit d62d29bfc1)
- Keep callNumberInput getter returning full input for display purposes
- Use callNumberNormalized getter to strip domain before making calls
- Add callNumberNormalized to component's mapped getters
- Update startCall validation to use normalized number
Change-Id: I4172a4f426bf7f827e3ff717a901b8a64f4264d1
(cherry picked from commit afd3e09d55)
e2e-testing.js automatically generates data-cy attributes for Vue components
used in Cypress E2E tests.
Component names were lost during the Vue 3 syntax migration, which broke
automatic data-cy generation. This change restores component names so the
test suite works again.
Change-Id: Ia643bdf3989970243101eb7c0c275b5323a9224d
(cherry picked from commit a06aeb6fa7)
- force @isaacs/brace-expansion 5.0.1 (patches minimatch/glob issue)
- force qs 6.14.1 (patches express/body-parser issue from quasar tooling)
- force tar 7.5.7 (patches node-gyp/tar issue pulled via npm)
- note: npm itself has no patch plus the dep was not used so we
removed it.
Change-Id: Ic145cbc509d80cf9d96b9a053de1ce0a7d8dc5a8
* Add testEnvironment: 'jsdom' to provide browser-like
globals (DOM APIs) that Vue and test-utils need
* Add explicit module path mapping in jest.config.js
to force Jest to use the CommonJS bundle instead of
the browser bundle.
Change-Id: I659b122ed3884c229b5f6dab1f08e135bcb8c03d
Modernize vue-wait initialization and usage patterns to support Vue 3
Composition API while preserving Vue 2 Options API functionality.
Changes:
- Migrate App.vue to Vue 3 <script setup> syntax
- Convert Options API to Composition API
- Use defineComponent and reactive state management
- Maintain existing functionality and lifecycle hooks
- Refactor vue-wait initialization (boot/vue-wait.js)
- Move initialization from App.vue mounted() to boot phase
- Create initializeWait() function for explicit setup
- Register $wait globally before component mounting
- Add Vue 3 composable support (composables/useWait.js)
- Create useWait() composable for Composition API components
- Access $wait via getCurrentInstance() for proper Vue 3 patterns
- Enable gradual migration from Options to Composition API
- Update documentation (doc/architectural-overview.md)
- Add "Loading State Management (vue-wait)" section
- Document usage patterns for both Vue 2 and Vue 3
- Clarify migration strategy and coexistence
Note:
All existing Vue 2 components using this.$wait continue working unchanged
while new Vue 3 components can use useWait() composable.
Change-Id: I62c9eaa81336a1ae115f1b326676497dcac262b2
- Migrate customer phonebook to api v2
- Replace api v1 patch methods on subscriber phonebook with api v2 endpoints
Change-Id: I2230fadaa315a7f828e9936342c17d18fe4e048b
- Update copyright years.
- Update Standards-Version to 4.7.2.
- Remove «Rules-Requires-Root: no» field, which is now the default.
- Remove «Priority: optional» field, which is now the default.
- Wrap and sort fields.
- Add spaces around operators in make variables.
Change-Id: I3f14795fa90057cb73e994fd82d28f3209bd8dac
Previously the error handling did not properly identify the duplicate
number error. Now we check the API response message to detect duplicate
entry errors and display the appropriate error directly on the number
field in the phonebook form.
Change-Id: Ifbde6304d79e62c076eb2f683a1e4bb06151ff38
Add composables (useStore, useUser, usePbx, useGlobals) and pure helpers
(destination, platform) to support gradual Vue 3 Composition API adoption.
- Extract pure functions from mixins to src/helpers/
- Add generic store access composables in src/composables/
- Add store infrastructure helpers (RequestState, API action wrappers)
- Export boot file utilities for direct import in services
- Add comprehensive tests and migration documentation
No breaking changes. Existing Options API code continues to work. New code can
use composables and helpers for cleaner patterns.
See migration-guide.md for usage examples and migration path.
Change-Id: I764a5e6635771e0f95f33f86064d70ee4a746207
Resolve all build configuration conflicts and
ensure all loaders and plugins are compatible.
* Update eslint config to use vue3 patterns
* Remove use of vuelidate/lib/validators and
replace it with vue3 @vuelidate/core and
@vuelidate/validators
* Replace vue-wait with vue-wait-vue3
Note: we didn't touch vue-resource because
unit tests are currently not in use.
Change-Id: I1cf5c3b559b943307f9a4bb988f359453062a48b
The custom announcements were not showing in
the CF menu under the PBXGroup section
because the action to load the announcements
was missing from the mounting hook.
Change-Id: I5813f2ce4471aa5a51ebc08ed3cdc08bde16b931
Trickle ICE candidate updates were not sent through
to kamailio/rtpengine. This was happening because
there was not ICE configuration.
Change-Id: I2a3ae1ab92ac9d6e766bd46915930fd553a6ff26