mirror of
https://github.com/fleetbase/fleetbase.git
synced 2026-01-10 16:29:07 +00:00
Compare commits
22 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
033cf5cfe0 | ||
|
|
4a4dc76e60 | ||
|
|
a52af94b00 | ||
|
|
9c4daf7a68 | ||
|
|
a8904ba112 | ||
|
|
6880664d9e | ||
|
|
99b30d7f58 | ||
|
|
c8539fd2a0 | ||
|
|
cb1aec40fd | ||
|
|
b728b366a0 | ||
|
|
5cfc3f1cc7 | ||
|
|
e7b5282aa3 | ||
|
|
7ffb7ac24a | ||
|
|
6e4a9edd7d | ||
|
|
d9d01c8bbc | ||
|
|
c54d75fa0f | ||
|
|
91904c3836 | ||
|
|
0e075e3b24 | ||
|
|
74a782f4ea | ||
|
|
a8b2042d85 | ||
|
|
cc52a40660 | ||
|
|
4fb2dec8c3 |
@@ -9,9 +9,9 @@
|
||||
"license": "MIT",
|
||||
"require": {
|
||||
"php": "^7.3|^8.0",
|
||||
"fleetbase/core-api": "^1.3.1",
|
||||
"fleetbase/fleetops-api": "^0.3.0",
|
||||
"fleetbase/storefront-api": "^0.2.2",
|
||||
"fleetbase/core-api": "^1.3.2",
|
||||
"fleetbase/fleetops-api": "^0.3.3",
|
||||
"fleetbase/storefront-api": "^0.2.4",
|
||||
"fruitcake/laravel-cors": "^2.0",
|
||||
"guzzlehttp/guzzle": "^7.0.1",
|
||||
"laravel/framework": "^8.75",
|
||||
|
||||
249
api/composer.lock
generated
249
api/composer.lock
generated
@@ -4,7 +4,7 @@
|
||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "4ef8ff8c33248b3cdd85ba738aacfcd3",
|
||||
"content-hash": "faa6338e3534fb28d5e024130c9c7da9",
|
||||
"packages": [
|
||||
{
|
||||
"name": "aloha/twilio",
|
||||
@@ -192,16 +192,16 @@
|
||||
},
|
||||
{
|
||||
"name": "aws/aws-sdk-php",
|
||||
"version": "3.283.13",
|
||||
"version": "3.285.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/aws/aws-sdk-php.git",
|
||||
"reference": "853eecfb21e8d623fa1b32e597b0a75912e8a404"
|
||||
"reference": "93165f8e241678b17f15212523dfe96f50307af1"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/853eecfb21e8d623fa1b32e597b0a75912e8a404",
|
||||
"reference": "853eecfb21e8d623fa1b32e597b0a75912e8a404",
|
||||
"url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/93165f8e241678b17f15212523dfe96f50307af1",
|
||||
"reference": "93165f8e241678b17f15212523dfe96f50307af1",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -281,9 +281,9 @@
|
||||
"support": {
|
||||
"forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80",
|
||||
"issues": "https://github.com/aws/aws-sdk-php/issues",
|
||||
"source": "https://github.com/aws/aws-sdk-php/tree/3.283.13"
|
||||
"source": "https://github.com/aws/aws-sdk-php/tree/3.285.2"
|
||||
},
|
||||
"time": "2023-10-26T18:14:40+00:00"
|
||||
"time": "2023-11-09T01:20:37+00:00"
|
||||
},
|
||||
{
|
||||
"name": "aws/aws-sdk-php-laravel",
|
||||
@@ -2002,16 +2002,16 @@
|
||||
},
|
||||
{
|
||||
"name": "fleetbase/core-api",
|
||||
"version": "1.3.1",
|
||||
"version": "1.3.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/fleetbase/core-api.git",
|
||||
"reference": "0b0fb9cde5e82caaf2b51f68960908f3c9a35a82"
|
||||
"reference": "e10f6e69d1604a4fa58257017d845e0d9b72e1c6"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/fleetbase/core-api/zipball/0b0fb9cde5e82caaf2b51f68960908f3c9a35a82",
|
||||
"reference": "0b0fb9cde5e82caaf2b51f68960908f3c9a35a82",
|
||||
"url": "https://api.github.com/repos/fleetbase/core-api/zipball/e10f6e69d1604a4fa58257017d845e0d9b72e1c6",
|
||||
"reference": "e10f6e69d1604a4fa58257017d845e0d9b72e1c6",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -2086,29 +2086,29 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/fleetbase/core-api/issues",
|
||||
"source": "https://github.com/fleetbase/core-api/tree/v1.3.1"
|
||||
"source": "https://github.com/fleetbase/core-api/tree/v1.3.2"
|
||||
},
|
||||
"time": "2023-10-10T12:35:05+00:00"
|
||||
"time": "2023-10-30T10:40:02+00:00"
|
||||
},
|
||||
{
|
||||
"name": "fleetbase/fleetops-api",
|
||||
"version": "0.3.0",
|
||||
"version": "0.3.3",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/fleetbase/fleetops.git",
|
||||
"reference": "73909ae2589c1be3c8a000c5dda4a0586b047a77"
|
||||
"reference": "5ce11e275d87d7a318cd0713f72be1b385621ed9"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/fleetbase/fleetops/zipball/73909ae2589c1be3c8a000c5dda4a0586b047a77",
|
||||
"reference": "73909ae2589c1be3c8a000c5dda4a0586b047a77",
|
||||
"url": "https://api.github.com/repos/fleetbase/fleetops/zipball/5ce11e275d87d7a318cd0713f72be1b385621ed9",
|
||||
"reference": "5ce11e275d87d7a318cd0713f72be1b385621ed9",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"barryvdh/laravel-dompdf": "^2.0",
|
||||
"brick/geo": "0.7.2",
|
||||
"cknow/laravel-money": "^7.1",
|
||||
"fleetbase/core-api": "^1.3.1",
|
||||
"fleetbase/core-api": "^1.3.2",
|
||||
"geocoder-php/google-maps-places-provider": "^1.4",
|
||||
"giggsey/libphonenumber-for-php": "^8.13",
|
||||
"league/geotools": "^1.1.0",
|
||||
@@ -2174,27 +2174,27 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/fleetbase/fleetops/issues",
|
||||
"source": "https://github.com/fleetbase/fleetops/tree/v0.3.0"
|
||||
"source": "https://github.com/fleetbase/fleetops/tree/v0.3.3"
|
||||
},
|
||||
"time": "2023-10-27T00:58:58+00:00"
|
||||
"time": "2023-11-09T08:42:31+00:00"
|
||||
},
|
||||
{
|
||||
"name": "fleetbase/storefront-api",
|
||||
"version": "0.2.2",
|
||||
"version": "0.2.4",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/fleetbase/storefront.git",
|
||||
"reference": "affa19ebee088001aae3c77fbf013e5027f4cc09"
|
||||
"reference": "df155f5b3e04f73087899c85208d8b3f5de5d466"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/fleetbase/storefront/zipball/affa19ebee088001aae3c77fbf013e5027f4cc09",
|
||||
"reference": "affa19ebee088001aae3c77fbf013e5027f4cc09",
|
||||
"url": "https://api.github.com/repos/fleetbase/storefront/zipball/df155f5b3e04f73087899c85208d8b3f5de5d466",
|
||||
"reference": "df155f5b3e04f73087899c85208d8b3f5de5d466",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"fleetbase/core-api": "^1.3.1",
|
||||
"fleetbase/fleetops-api": "^0.3.0",
|
||||
"fleetbase/core-api": "^1.3.2",
|
||||
"fleetbase/fleetops-api": "^0.3.2",
|
||||
"geocoder-php/google-maps-places-provider": "^1.4",
|
||||
"laravel-notification-channels/apn": "^3.8",
|
||||
"laravel-notification-channels/fcm": "^2.7",
|
||||
@@ -2255,9 +2255,9 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/fleetbase/storefront/issues",
|
||||
"source": "https://github.com/fleetbase/storefront/tree/v0.2.2"
|
||||
"source": "https://github.com/fleetbase/storefront/tree/v0.2.4"
|
||||
},
|
||||
"time": "2023-10-27T01:59:15+00:00"
|
||||
"time": "2023-11-09T08:50:52+00:00"
|
||||
},
|
||||
{
|
||||
"name": "fruitcake/laravel-cors",
|
||||
@@ -2739,16 +2739,16 @@
|
||||
},
|
||||
{
|
||||
"name": "giggsey/libphonenumber-for-php",
|
||||
"version": "8.13.23",
|
||||
"version": "8.13.24",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/giggsey/libphonenumber-for-php.git",
|
||||
"reference": "b2dff83693cb46eb4478b193e9d94e2ff6258480"
|
||||
"reference": "746ca6a565b9d4167c94c80824f43fa6fb463fd1"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/giggsey/libphonenumber-for-php/zipball/b2dff83693cb46eb4478b193e9d94e2ff6258480",
|
||||
"reference": "b2dff83693cb46eb4478b193e9d94e2ff6258480",
|
||||
"url": "https://api.github.com/repos/giggsey/libphonenumber-for-php/zipball/746ca6a565b9d4167c94c80824f43fa6fb463fd1",
|
||||
"reference": "746ca6a565b9d4167c94c80824f43fa6fb463fd1",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -2807,20 +2807,20 @@
|
||||
"issues": "https://github.com/giggsey/libphonenumber-for-php/issues",
|
||||
"source": "https://github.com/giggsey/libphonenumber-for-php"
|
||||
},
|
||||
"time": "2023-10-11T07:12:56+00:00"
|
||||
"time": "2023-10-31T08:12:54+00:00"
|
||||
},
|
||||
{
|
||||
"name": "giggsey/locale",
|
||||
"version": "2.4",
|
||||
"version": "2.5",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/giggsey/Locale.git",
|
||||
"reference": "a6b33dfc9e8949b7e28133c4628b29cd9f1850bb"
|
||||
"reference": "e6d4540109a01dd2bc7334cdc842d6a6a67cf239"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/giggsey/Locale/zipball/a6b33dfc9e8949b7e28133c4628b29cd9f1850bb",
|
||||
"reference": "a6b33dfc9e8949b7e28133c4628b29cd9f1850bb",
|
||||
"url": "https://api.github.com/repos/giggsey/Locale/zipball/e6d4540109a01dd2bc7334cdc842d6a6a67cf239",
|
||||
"reference": "e6d4540109a01dd2bc7334cdc842d6a6a67cf239",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -2859,9 +2859,9 @@
|
||||
"description": "Locale functions required by libphonenumber-for-php",
|
||||
"support": {
|
||||
"issues": "https://github.com/giggsey/Locale/issues",
|
||||
"source": "https://github.com/giggsey/Locale/tree/2.4"
|
||||
"source": "https://github.com/giggsey/Locale/tree/2.5"
|
||||
},
|
||||
"time": "2023-04-13T07:40:58+00:00"
|
||||
"time": "2023-11-01T17:19:48+00:00"
|
||||
},
|
||||
{
|
||||
"name": "google/auth",
|
||||
@@ -2923,16 +2923,16 @@
|
||||
},
|
||||
{
|
||||
"name": "google/cloud-core",
|
||||
"version": "v1.52.7",
|
||||
"version": "v1.52.8",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/googleapis/google-cloud-php-core.git",
|
||||
"reference": "f79480d1e2b31a695ae98b42ca10b67b41da9fb1"
|
||||
"reference": "2ebcaa410f7e92dca5677dd9cc4ec1f9f315e83c"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/googleapis/google-cloud-php-core/zipball/f79480d1e2b31a695ae98b42ca10b67b41da9fb1",
|
||||
"reference": "f79480d1e2b31a695ae98b42ca10b67b41da9fb1",
|
||||
"url": "https://api.github.com/repos/googleapis/google-cloud-php-core/zipball/2ebcaa410f7e92dca5677dd9cc4ec1f9f315e83c",
|
||||
"reference": "2ebcaa410f7e92dca5677dd9cc4ec1f9f315e83c",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -2982,22 +2982,22 @@
|
||||
],
|
||||
"description": "Google Cloud PHP shared dependency, providing functionality useful to all components.",
|
||||
"support": {
|
||||
"source": "https://github.com/googleapis/google-cloud-php-core/tree/v1.52.7"
|
||||
"source": "https://github.com/googleapis/google-cloud-php-core/tree/v1.52.8"
|
||||
},
|
||||
"time": "2023-10-16T22:54:31+00:00"
|
||||
"time": "2023-11-02T19:15:44+00:00"
|
||||
},
|
||||
{
|
||||
"name": "google/cloud-storage",
|
||||
"version": "v1.33.4",
|
||||
"version": "v1.34.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/googleapis/google-cloud-php-storage.git",
|
||||
"reference": "02f53c6cbbc18c4ee8f5d12cbd7887ceec575724"
|
||||
"reference": "4589dd3c8f4171db4ce3eb335fc7d894661ca0e9"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/googleapis/google-cloud-php-storage/zipball/02f53c6cbbc18c4ee8f5d12cbd7887ceec575724",
|
||||
"reference": "02f53c6cbbc18c4ee8f5d12cbd7887ceec575724",
|
||||
"url": "https://api.github.com/repos/googleapis/google-cloud-php-storage/zipball/4589dd3c8f4171db4ce3eb335fc7d894661ca0e9",
|
||||
"reference": "4589dd3c8f4171db4ce3eb335fc7d894661ca0e9",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -3038,9 +3038,9 @@
|
||||
],
|
||||
"description": "Cloud Storage Client for PHP",
|
||||
"support": {
|
||||
"source": "https://github.com/googleapis/google-cloud-php-storage/tree/v1.33.4"
|
||||
"source": "https://github.com/googleapis/google-cloud-php-storage/tree/v1.34.0"
|
||||
},
|
||||
"time": "2023-10-16T22:54:31+00:00"
|
||||
"time": "2023-11-02T19:15:44+00:00"
|
||||
},
|
||||
{
|
||||
"name": "graham-campbell/manager",
|
||||
@@ -5350,28 +5350,28 @@
|
||||
},
|
||||
{
|
||||
"name": "maatwebsite/excel",
|
||||
"version": "3.1.49",
|
||||
"version": "3.1.50",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/SpartnerNL/Laravel-Excel.git",
|
||||
"reference": "769209f49ebe3419017114f98bd61e2a7d9af259"
|
||||
"reference": "d79e66391aa306983bb7e234503f5605c3e33348"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/SpartnerNL/Laravel-Excel/zipball/769209f49ebe3419017114f98bd61e2a7d9af259",
|
||||
"reference": "769209f49ebe3419017114f98bd61e2a7d9af259",
|
||||
"url": "https://api.github.com/repos/SpartnerNL/Laravel-Excel/zipball/d79e66391aa306983bb7e234503f5605c3e33348",
|
||||
"reference": "d79e66391aa306983bb7e234503f5605c3e33348",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"composer/semver": "^3.3",
|
||||
"ext-json": "*",
|
||||
"illuminate/support": "5.8.*|^6.0|^7.0|^8.0|^9.0|^10.0",
|
||||
"php": "^7.0|^8.0",
|
||||
"illuminate/support": "5.8.*||^6.0||^7.0||^8.0||^9.0||^10.0",
|
||||
"php": "^7.0||^8.0",
|
||||
"phpoffice/phpspreadsheet": "^1.18",
|
||||
"psr/simple-cache": "^1.0|^2.0|^3.0"
|
||||
"psr/simple-cache": "^1.0||^2.0||^3.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"orchestra/testbench": "^6.0|^7.0|^8.0",
|
||||
"orchestra/testbench": "^6.0||^7.0||^8.0",
|
||||
"predis/predis": "^1.1"
|
||||
},
|
||||
"type": "library",
|
||||
@@ -5414,7 +5414,7 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/SpartnerNL/Laravel-Excel/issues",
|
||||
"source": "https://github.com/SpartnerNL/Laravel-Excel/tree/3.1.49"
|
||||
"source": "https://github.com/SpartnerNL/Laravel-Excel/tree/3.1.50"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -5426,7 +5426,7 @@
|
||||
"type": "github"
|
||||
}
|
||||
],
|
||||
"time": "2023-10-26T09:01:33+00:00"
|
||||
"time": "2023-11-06T11:29:48+00:00"
|
||||
},
|
||||
{
|
||||
"name": "maennchen/zipstream-php",
|
||||
@@ -5842,16 +5842,16 @@
|
||||
},
|
||||
{
|
||||
"name": "monolog/monolog",
|
||||
"version": "2.9.1",
|
||||
"version": "2.9.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/Seldaek/monolog.git",
|
||||
"reference": "f259e2b15fb95494c83f52d3caad003bbf5ffaa1"
|
||||
"reference": "437cb3628f4cf6042cc10ae97fc2b8472e48ca1f"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/Seldaek/monolog/zipball/f259e2b15fb95494c83f52d3caad003bbf5ffaa1",
|
||||
"reference": "f259e2b15fb95494c83f52d3caad003bbf5ffaa1",
|
||||
"url": "https://api.github.com/repos/Seldaek/monolog/zipball/437cb3628f4cf6042cc10ae97fc2b8472e48ca1f",
|
||||
"reference": "437cb3628f4cf6042cc10ae97fc2b8472e48ca1f",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -5928,7 +5928,7 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/Seldaek/monolog/issues",
|
||||
"source": "https://github.com/Seldaek/monolog/tree/2.9.1"
|
||||
"source": "https://github.com/Seldaek/monolog/tree/2.9.2"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -5940,7 +5940,7 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2023-02-06T13:44:46+00:00"
|
||||
"time": "2023-10-27T15:25:26+00:00"
|
||||
},
|
||||
{
|
||||
"name": "mtdowling/jmespath.php",
|
||||
@@ -6823,16 +6823,16 @@
|
||||
},
|
||||
{
|
||||
"name": "php-http/curl-client",
|
||||
"version": "2.3.0",
|
||||
"version": "2.3.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/php-http/curl-client.git",
|
||||
"reference": "f7352c0796549949900d28fe991e19c90572386a"
|
||||
"reference": "085570be588f7cbdc4601e78886eea5b7051ad71"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/php-http/curl-client/zipball/f7352c0796549949900d28fe991e19c90572386a",
|
||||
"reference": "f7352c0796549949900d28fe991e19c90572386a",
|
||||
"url": "https://api.github.com/repos/php-http/curl-client/zipball/085570be588f7cbdc4601e78886eea5b7051ad71",
|
||||
"reference": "085570be588f7cbdc4601e78886eea5b7051ad71",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -6843,7 +6843,7 @@
|
||||
"php-http/message": "^1.2",
|
||||
"psr/http-client": "^1.0",
|
||||
"psr/http-factory-implementation": "^1.0",
|
||||
"symfony/options-resolver": "^3.4 || ^4.0 || ^5.0 || ^6.0"
|
||||
"symfony/options-resolver": "^3.4 || ^4.0 || ^5.0 || ^6.0 || ^7.0"
|
||||
},
|
||||
"provide": {
|
||||
"php-http/async-client-implementation": "1.0",
|
||||
@@ -6854,6 +6854,7 @@
|
||||
"guzzlehttp/psr7": "^1.0",
|
||||
"laminas/laminas-diactoros": "^2.0",
|
||||
"php-http/client-integration-tests": "^3.0",
|
||||
"php-http/message-factory": "^1.1",
|
||||
"phpunit/phpunit": "^7.5 || ^9.4"
|
||||
},
|
||||
"type": "library",
|
||||
@@ -6881,9 +6882,9 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/php-http/curl-client/issues",
|
||||
"source": "https://github.com/php-http/curl-client/tree/2.3.0"
|
||||
"source": "https://github.com/php-http/curl-client/tree/2.3.1"
|
||||
},
|
||||
"time": "2023-04-28T14:56:41+00:00"
|
||||
"time": "2023-11-03T15:32:00+00:00"
|
||||
},
|
||||
{
|
||||
"name": "php-http/discovery",
|
||||
@@ -7204,16 +7205,16 @@
|
||||
},
|
||||
{
|
||||
"name": "php-http/promise",
|
||||
"version": "1.2.0",
|
||||
"version": "1.2.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/php-http/promise.git",
|
||||
"reference": "ef4905bfb492ff389eb7f12e26925a0f20073050"
|
||||
"reference": "44a67cb59f708f826f3bec35f22030b3edb90119"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/php-http/promise/zipball/ef4905bfb492ff389eb7f12e26925a0f20073050",
|
||||
"reference": "ef4905bfb492ff389eb7f12e26925a0f20073050",
|
||||
"url": "https://api.github.com/repos/php-http/promise/zipball/44a67cb59f708f826f3bec35f22030b3edb90119",
|
||||
"reference": "44a67cb59f708f826f3bec35f22030b3edb90119",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -7250,9 +7251,9 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/php-http/promise/issues",
|
||||
"source": "https://github.com/php-http/promise/tree/1.2.0"
|
||||
"source": "https://github.com/php-http/promise/tree/1.2.1"
|
||||
},
|
||||
"time": "2023-10-24T09:20:26+00:00"
|
||||
"time": "2023-11-08T12:57:08+00:00"
|
||||
},
|
||||
{
|
||||
"name": "phpoffice/phpspreadsheet",
|
||||
@@ -7602,16 +7603,16 @@
|
||||
},
|
||||
{
|
||||
"name": "phrity/websocket",
|
||||
"version": "1.7.0",
|
||||
"version": "1.7.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/sirn-se/websocket-php.git",
|
||||
"reference": "d6dd8337e1ac13c08e0be25e168ad907300da955"
|
||||
"reference": "7349a37c5a853ff0ae12c03fa59e8879e9dda486"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/sirn-se/websocket-php/zipball/d6dd8337e1ac13c08e0be25e168ad907300da955",
|
||||
"reference": "d6dd8337e1ac13c08e0be25e168ad907300da955",
|
||||
"url": "https://api.github.com/repos/sirn-se/websocket-php/zipball/7349a37c5a853ff0ae12c03fa59e8879e9dda486",
|
||||
"reference": "7349a37c5a853ff0ae12c03fa59e8879e9dda486",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -7625,7 +7626,7 @@
|
||||
"require-dev": {
|
||||
"php-coveralls/php-coveralls": "^2.0",
|
||||
"phpunit/phpunit": "^9.0 | ^10.0",
|
||||
"phrity/net-mock": "^1.2",
|
||||
"phrity/net-mock": "^1.3",
|
||||
"squizlabs/php_codesniffer": "^3.5"
|
||||
},
|
||||
"type": "library",
|
||||
@@ -7657,9 +7658,9 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/sirn-se/websocket-php/issues",
|
||||
"source": "https://github.com/sirn-se/websocket-php/tree/1.7.0"
|
||||
"source": "https://github.com/sirn-se/websocket-php/tree/1.7.2"
|
||||
},
|
||||
"time": "2023-07-14T05:44:18+00:00"
|
||||
"time": "2023-11-04T12:09:42+00:00"
|
||||
},
|
||||
{
|
||||
"name": "pragmarx/coollection",
|
||||
@@ -10042,16 +10043,16 @@
|
||||
},
|
||||
{
|
||||
"name": "symfony/cache",
|
||||
"version": "v5.4.29",
|
||||
"version": "v5.4.30",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/cache.git",
|
||||
"reference": "e29c5a97bc2d81269973c3e1d7ceb9d48b4d5151"
|
||||
"reference": "2742d1b595927210546bb7a0887094cf1494de21"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/cache/zipball/e29c5a97bc2d81269973c3e1d7ceb9d48b4d5151",
|
||||
"reference": "e29c5a97bc2d81269973c3e1d7ceb9d48b4d5151",
|
||||
"url": "https://api.github.com/repos/symfony/cache/zipball/2742d1b595927210546bb7a0887094cf1494de21",
|
||||
"reference": "2742d1b595927210546bb7a0887094cf1494de21",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -10079,7 +10080,7 @@
|
||||
"require-dev": {
|
||||
"cache/integration-tests": "dev-master",
|
||||
"doctrine/cache": "^1.6|^2.0",
|
||||
"doctrine/dbal": "^2.13.1|^3.0",
|
||||
"doctrine/dbal": "^2.13.1|^3|^4",
|
||||
"predis/predis": "^1.1",
|
||||
"psr/simple-cache": "^1.0|^2.0",
|
||||
"symfony/config": "^4.4|^5.0|^6.0",
|
||||
@@ -10119,7 +10120,7 @@
|
||||
"psr6"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/cache/tree/v5.4.29"
|
||||
"source": "https://github.com/symfony/cache/tree/v5.4.30"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -10135,7 +10136,7 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2023-09-19T13:25:51+00:00"
|
||||
"time": "2023-10-17T14:17:25+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/cache-contracts",
|
||||
@@ -10917,16 +10918,16 @@
|
||||
},
|
||||
{
|
||||
"name": "symfony/http-foundation",
|
||||
"version": "v5.4.28",
|
||||
"version": "v5.4.30",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/http-foundation.git",
|
||||
"reference": "365992c83a836dfe635f1e903ccca43ee03d3dd2"
|
||||
"reference": "671769f79de0532da1478c60968b42506e185d2e"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/http-foundation/zipball/365992c83a836dfe635f1e903ccca43ee03d3dd2",
|
||||
"reference": "365992c83a836dfe635f1e903ccca43ee03d3dd2",
|
||||
"url": "https://api.github.com/repos/symfony/http-foundation/zipball/671769f79de0532da1478c60968b42506e185d2e",
|
||||
"reference": "671769f79de0532da1478c60968b42506e185d2e",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -10973,7 +10974,7 @@
|
||||
"description": "Defines an object-oriented layer for the HTTP specification",
|
||||
"homepage": "https://symfony.com",
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/http-foundation/tree/v5.4.28"
|
||||
"source": "https://github.com/symfony/http-foundation/tree/v5.4.30"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -10989,20 +10990,20 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2023-08-21T07:23:18+00:00"
|
||||
"time": "2023-10-28T23:35:12+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/http-kernel",
|
||||
"version": "v5.4.29",
|
||||
"version": "v5.4.30",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/http-kernel.git",
|
||||
"reference": "f53265fc6bd2a7f3a4ed4e443b76e750348ac3f7"
|
||||
"reference": "16b9b36f81631155546d9f05271dd027c83c3dd4"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/http-kernel/zipball/f53265fc6bd2a7f3a4ed4e443b76e750348ac3f7",
|
||||
"reference": "f53265fc6bd2a7f3a4ed4e443b76e750348ac3f7",
|
||||
"url": "https://api.github.com/repos/symfony/http-kernel/zipball/16b9b36f81631155546d9f05271dd027c83c3dd4",
|
||||
"reference": "16b9b36f81631155546d9f05271dd027c83c3dd4",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -11085,7 +11086,7 @@
|
||||
"description": "Provides a structured process for converting a Request into a Response",
|
||||
"homepage": "https://symfony.com",
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/http-kernel/tree/v5.4.29"
|
||||
"source": "https://github.com/symfony/http-kernel/tree/v5.4.30"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -11101,7 +11102,7 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2023-09-30T06:31:17+00:00"
|
||||
"time": "2023-10-29T00:07:40+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/mime",
|
||||
@@ -12488,16 +12489,16 @@
|
||||
},
|
||||
{
|
||||
"name": "symfony/serializer",
|
||||
"version": "v5.4.29",
|
||||
"version": "v5.4.30",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/serializer.git",
|
||||
"reference": "b893175000155839170d589f3a3593f2ce601829"
|
||||
"reference": "ceadb4e08830e69738d313b667cfb426269f67f6"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/serializer/zipball/b893175000155839170d589f3a3593f2ce601829",
|
||||
"reference": "b893175000155839170d589f3a3593f2ce601829",
|
||||
"url": "https://api.github.com/repos/symfony/serializer/zipball/ceadb4e08830e69738d313b667cfb426269f67f6",
|
||||
"reference": "ceadb4e08830e69738d313b667cfb426269f67f6",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -12571,7 +12572,7 @@
|
||||
"description": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.",
|
||||
"homepage": "https://symfony.com",
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/serializer/tree/v5.4.29"
|
||||
"source": "https://github.com/symfony/serializer/tree/v5.4.30"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -12587,7 +12588,7 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2023-09-20T07:40:46+00:00"
|
||||
"time": "2023-10-25T18:53:19+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/service-contracts",
|
||||
@@ -12760,16 +12761,16 @@
|
||||
},
|
||||
{
|
||||
"name": "symfony/translation",
|
||||
"version": "v5.4.24",
|
||||
"version": "v5.4.30",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/translation.git",
|
||||
"reference": "de237e59c5833422342be67402d487fbf50334ff"
|
||||
"reference": "8560dc532e4e48d331937532a7cbfd2a9f9f53ce"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/translation/zipball/de237e59c5833422342be67402d487fbf50334ff",
|
||||
"reference": "de237e59c5833422342be67402d487fbf50334ff",
|
||||
"url": "https://api.github.com/repos/symfony/translation/zipball/8560dc532e4e48d331937532a7cbfd2a9f9f53ce",
|
||||
"reference": "8560dc532e4e48d331937532a7cbfd2a9f9f53ce",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -12837,7 +12838,7 @@
|
||||
"description": "Provides tools to internationalize your application",
|
||||
"homepage": "https://symfony.com",
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/translation/tree/v5.4.24"
|
||||
"source": "https://github.com/symfony/translation/tree/v5.4.30"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -12853,7 +12854,7 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2023-05-19T12:34:17+00:00"
|
||||
"time": "2023-10-28T09:19:54+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/translation-contracts",
|
||||
@@ -14697,16 +14698,16 @@
|
||||
},
|
||||
{
|
||||
"name": "filp/whoops",
|
||||
"version": "2.15.3",
|
||||
"version": "2.15.4",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/filp/whoops.git",
|
||||
"reference": "c83e88a30524f9360b11f585f71e6b17313b7187"
|
||||
"reference": "a139776fa3f5985a50b509f2a02ff0f709d2a546"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/filp/whoops/zipball/c83e88a30524f9360b11f585f71e6b17313b7187",
|
||||
"reference": "c83e88a30524f9360b11f585f71e6b17313b7187",
|
||||
"url": "https://api.github.com/repos/filp/whoops/zipball/a139776fa3f5985a50b509f2a02ff0f709d2a546",
|
||||
"reference": "a139776fa3f5985a50b509f2a02ff0f709d2a546",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -14756,7 +14757,7 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/filp/whoops/issues",
|
||||
"source": "https://github.com/filp/whoops/tree/2.15.3"
|
||||
"source": "https://github.com/filp/whoops/tree/2.15.4"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -14764,7 +14765,7 @@
|
||||
"type": "github"
|
||||
}
|
||||
],
|
||||
"time": "2023-07-13T12:00:00+00:00"
|
||||
"time": "2023-11-03T12:00:00+00:00"
|
||||
},
|
||||
{
|
||||
"name": "hamcrest/hamcrest-php",
|
||||
|
||||
@@ -16,6 +16,6 @@
|
||||
<Button @wrapperClass="mt-3" @icon="plug" @text="Test Config" @onClick={{this.test}} @isLoading={{this.isLoading}} />
|
||||
</ContentPanel>
|
||||
|
||||
<div class="mt-3 flex items-center justify-end">
|
||||
<Button @type="primary" @size="lg" @icon="save" @text="Save Changes" @onClick={{this.save}} @disabled={{this.isLoading}} @isLoading={{this.isLoading}} />
|
||||
</div>
|
||||
<EmberWormhole @to="next-view-section-subheader-actions">
|
||||
<Button @type="primary" @size="sm" @icon="save" @text="Save Changes" @onClick={{this.save}} @disabled={{this.isLoading}} @isLoading={{this.isLoading}} />
|
||||
</EmberWormhole>
|
||||
@@ -22,6 +22,6 @@
|
||||
<Button @wrapperClass="mt-3" @icon="plug" @text="Test Config" @onClick={{this.test}} @isLoading={{this.isLoading}} />
|
||||
</ContentPanel>
|
||||
|
||||
<div class="mt-3 flex items-center justify-end">
|
||||
<Button @type="primary" @size="lg" @icon="save" @text="Save Changes" @onClick={{this.save}} @disabled={{this.isLoading}} @isLoading={{this.isLoading}} />
|
||||
</div>
|
||||
<EmberWormhole @to="next-view-section-subheader-actions">
|
||||
<Button @type="primary" @size="sm" @icon="save" @text="Save Changes" @onClick={{this.save}} @disabled={{this.isLoading}} @isLoading={{this.isLoading}} />
|
||||
</EmberWormhole>
|
||||
@@ -47,6 +47,6 @@
|
||||
</div>
|
||||
</ContentPanel>
|
||||
|
||||
<div class="mt-3 flex items-center justify-end">
|
||||
<Button @type="primary" @size="lg" @icon="save" @text="Save Changes" @onClick={{this.save}} @disabled={{this.isLoading}} @isLoading={{this.isLoading}} />
|
||||
</div>
|
||||
<EmberWormhole @to="next-view-section-subheader-actions">
|
||||
<Button @type="primary" @size="sm" @icon="save" @text="Save Changes" @onClick={{this.save}} @disabled={{this.isLoading}} @isLoading={{this.isLoading}} />
|
||||
</EmberWormhole>
|
||||
@@ -20,6 +20,6 @@
|
||||
<Button @wrapperClass="mt-3" @icon="plug" @text="Test Config" @onClick={{this.test}} @isLoading={{this.isLoading}} />
|
||||
</ContentPanel>
|
||||
|
||||
<div class="mt-3 flex items-center justify-end">
|
||||
<Button @type="primary" @size="lg" @icon="save" @text="Save Changes" @onClick={{this.save}} @disabled={{this.isLoading}} @isLoading={{this.isLoading}} />
|
||||
</div>
|
||||
<EmberWormhole @to="next-view-section-subheader-actions">
|
||||
<Button @type="primary" @size="sm" @icon="save" @text="Save Changes" @onClick={{this.save}} @disabled={{this.isLoading}} @isLoading={{this.isLoading}} />
|
||||
</EmberWormhole>
|
||||
@@ -40,6 +40,6 @@
|
||||
<InputGroup @name="IP Info API Key" @value={{this.ipinfoApiKey}} disabled={{this.isLoading}} />
|
||||
</ContentPanel>
|
||||
|
||||
<div class="mt-3 flex items-center justify-end">
|
||||
<Button @type="primary" @size="lg" @icon="save" @text="Save Changes" @onClick={{this.save}} @disabled={{this.isLoading}} @isLoading={{this.isLoading}} />
|
||||
</div>
|
||||
<EmberWormhole @to="next-view-section-subheader-actions">
|
||||
<Button @type="primary" @size="sm" @icon="save" @text="Save Changes" @onClick={{this.save}} @disabled={{this.isLoading}} @isLoading={{this.isLoading}} />
|
||||
</EmberWormhole>
|
||||
@@ -65,13 +65,6 @@ export default class ConsoleController extends Controller {
|
||||
*/
|
||||
@tracked organizations = [];
|
||||
|
||||
/**
|
||||
* Whether or not to hide the sidebar.
|
||||
*
|
||||
* @var {Boolean}
|
||||
*/
|
||||
@tracked hideSidebar = true;
|
||||
|
||||
/**
|
||||
* Sidebar Context Controls
|
||||
*
|
||||
@@ -79,6 +72,13 @@ export default class ConsoleController extends Controller {
|
||||
*/
|
||||
@tracked sidebarContext;
|
||||
|
||||
/**
|
||||
* Routes which should hide the sidebar menu.
|
||||
*
|
||||
* @var {Array}
|
||||
*/
|
||||
@tracked hiddenSidebarRoutes = ['console.home', 'console.extensions', 'console.notifications'];
|
||||
|
||||
/**
|
||||
* Installed extensions.
|
||||
*
|
||||
@@ -104,7 +104,7 @@ export default class ConsoleController extends Controller {
|
||||
|
||||
this.router.on('routeDidChange', (transition) => {
|
||||
if (this.sidebarContext) {
|
||||
if (transition.to.name === 'console.home' || transition.to.name === 'console.extensions') {
|
||||
if (this.hiddenSidebarRoutes.includes(transition.to.name)) {
|
||||
this.sidebarContext.hideNow();
|
||||
} else {
|
||||
this.sidebarContext.show();
|
||||
@@ -123,7 +123,7 @@ export default class ConsoleController extends Controller {
|
||||
this.sidebarContext = sidebarContext;
|
||||
this.universe.sidebarContext = sidebarContext;
|
||||
|
||||
if (this.router.currentRouteName === 'console.home' || this.router.currentRouteName === 'console.extensions') {
|
||||
if (this.hiddenSidebarRoutes.includes(this.router.currentRouteName)) {
|
||||
this.sidebarContext.hideNow();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,5 +2,10 @@ import Controller from '@ember/controller';
|
||||
import { inject as service } from '@ember/service';
|
||||
|
||||
export default class ConsoleAccountController extends Controller {
|
||||
/**
|
||||
* Inject the `universe` service.
|
||||
*
|
||||
* @memberof ConsoleAdminController
|
||||
*/
|
||||
@service universe;
|
||||
}
|
||||
|
||||
@@ -2,5 +2,10 @@ import Controller from '@ember/controller';
|
||||
import { inject as service } from '@ember/service';
|
||||
|
||||
export default class ConsoleAdminController extends Controller {
|
||||
/**
|
||||
* Inject the `universe` service.
|
||||
*
|
||||
* @memberof ConsoleAdminController
|
||||
*/
|
||||
@service universe;
|
||||
}
|
||||
|
||||
136
console/app/controllers/console/admin/notifications.js
Normal file
136
console/app/controllers/console/admin/notifications.js
Normal file
@@ -0,0 +1,136 @@
|
||||
import Controller from '@ember/controller';
|
||||
import { tracked } from '@glimmer/tracking';
|
||||
import { action } from '@ember/object';
|
||||
import { inject as service } from '@ember/service';
|
||||
import createNotificationKey from '../../../utils/create-notification-key';
|
||||
|
||||
export default class ConsoleAdminNotificationsController extends Controller {
|
||||
/**
|
||||
* Inject the notifications service.
|
||||
*
|
||||
* @memberof ConsoleAdminNotificationsController
|
||||
*/
|
||||
@service notifications;
|
||||
|
||||
/**
|
||||
* Inject the fetch service.
|
||||
*
|
||||
* @memberof ConsoleAdminNotificationsController
|
||||
*/
|
||||
@service fetch;
|
||||
|
||||
/**
|
||||
* The notification settings value JSON.
|
||||
*
|
||||
* @memberof ConsoleAdminNotificationsController
|
||||
* @var {Object}
|
||||
*/
|
||||
@tracked notificationSettings = {};
|
||||
|
||||
/**
|
||||
* Notification transport methods enabled.
|
||||
*
|
||||
* @memberof ConsoleAdminNotificationsController
|
||||
* @var {Array}
|
||||
*/
|
||||
@tracked notificationTransportMethods = ['email', 'sms'];
|
||||
|
||||
/**
|
||||
* Tracked property for the loading state
|
||||
*
|
||||
* @memberof ConsoleAdminNotificationsController
|
||||
* @var {Boolean}
|
||||
*/
|
||||
@tracked isLoading = false;
|
||||
|
||||
/**
|
||||
* Creates an instance of ConsoleAdminNotificationsController.
|
||||
* @memberof ConsoleAdminNotificationsController
|
||||
*/
|
||||
constructor() {
|
||||
super(...arguments);
|
||||
this.getSettings();
|
||||
}
|
||||
|
||||
/**
|
||||
* Selectes notifiables for settings.
|
||||
*
|
||||
* @param {Object} notification
|
||||
* @param {Array} notifiables
|
||||
* @memberof ConsoleAdminNotificationsController
|
||||
*/
|
||||
@action onSelectNotifiable(notification, notifiables) {
|
||||
const notificationKey = createNotificationKey(notification.definition, notification.name);
|
||||
const _notificationSettings = { ...this.notificationSettings };
|
||||
|
||||
if (!_notificationSettings[notificationKey]) {
|
||||
_notificationSettings[notificationKey] = {};
|
||||
}
|
||||
|
||||
_notificationSettings[notificationKey].notifiables = notifiables;
|
||||
_notificationSettings[notificationKey].definition = notification.definition;
|
||||
_notificationSettings[notificationKey].via = notifiables.map((notifiable) => {
|
||||
return {
|
||||
identifier: notifiable.value,
|
||||
methods: this.notificationTransportMethods,
|
||||
};
|
||||
});
|
||||
|
||||
this.mutateNotificationSettings(_notificationSettings);
|
||||
}
|
||||
|
||||
/**
|
||||
* Mutates the notification settings property.
|
||||
*
|
||||
* @param {Object} [_notificationSettings={}]
|
||||
* @memberof ConsoleAdminNotificationsController
|
||||
*/
|
||||
mutateNotificationSettings(_notificationSettings = {}) {
|
||||
this.notificationSettings = {
|
||||
...this.notificationSettings,
|
||||
..._notificationSettings,
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Save notification settings to the server.
|
||||
*
|
||||
* @action
|
||||
* @method saveSettings
|
||||
* @returns {Promise}
|
||||
* @memberof ConsoleAdminNotificationsController
|
||||
*/
|
||||
@action saveSettings() {
|
||||
const { notificationSettings } = this;
|
||||
|
||||
this.isLoading = true;
|
||||
|
||||
return this.fetch
|
||||
.post('notifications/save-settings', { notificationSettings })
|
||||
.then(() => {
|
||||
this.notifications.success('Notification settings successfully saved.');
|
||||
})
|
||||
.catch((error) => {
|
||||
this.notifications.serverError(error);
|
||||
})
|
||||
.finally(() => {
|
||||
this.isLoading = false;
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Fetches and updates notification settings asynchronously.
|
||||
*
|
||||
* @returns {Promise<void>} A promise for successful retrieval and update, or an error on failure.
|
||||
*/
|
||||
getSettings() {
|
||||
return this.fetch
|
||||
.get('notifications/get-settings')
|
||||
.then(({ notificationSettings }) => {
|
||||
this.notificationSettings = notificationSettings;
|
||||
})
|
||||
.catch((error) => {
|
||||
this.notifications.serverError(error);
|
||||
});
|
||||
}
|
||||
}
|
||||
188
console/app/controllers/console/notifications.js
Normal file
188
console/app/controllers/console/notifications.js
Normal file
@@ -0,0 +1,188 @@
|
||||
import Controller from '@ember/controller';
|
||||
import { tracked } from '@glimmer/tracking';
|
||||
import { action } from '@ember/object';
|
||||
import { inject as service } from '@ember/service';
|
||||
|
||||
/**
|
||||
* Controller for managing notifications.
|
||||
*/
|
||||
export default class NotificationsController extends Controller {
|
||||
/**
|
||||
* Inject the `socket` service
|
||||
*
|
||||
* @memberof NotificationsController
|
||||
*/
|
||||
@service socket;
|
||||
|
||||
/**
|
||||
* Inject the `store` service
|
||||
*
|
||||
* @memberof NotificationsController
|
||||
*/
|
||||
@service store;
|
||||
|
||||
/**
|
||||
* Inject the `fetch` service
|
||||
*
|
||||
* @memberof NotificationsController
|
||||
*/
|
||||
@service fetch;
|
||||
|
||||
/**
|
||||
* Inject the `notifications` service
|
||||
*
|
||||
* @memberof NotificationsController
|
||||
*/
|
||||
@service notifications;
|
||||
|
||||
/**
|
||||
* Inject the `universe` service
|
||||
*
|
||||
* @memberof NotificationsController
|
||||
*/
|
||||
@service universe;
|
||||
|
||||
/**
|
||||
* Inject the `router` service
|
||||
*
|
||||
* @memberof NotificationsController
|
||||
*/
|
||||
@service router;
|
||||
|
||||
/**
|
||||
* Queryable parameters for this controller's model
|
||||
*
|
||||
* @var {Array}
|
||||
*/
|
||||
queryParams = ['page', 'limit', 'sort', 'query', 'created_at'];
|
||||
|
||||
/**
|
||||
* The current page of data being viewed
|
||||
*
|
||||
* @var {Integer}
|
||||
*/
|
||||
@tracked page = 1;
|
||||
|
||||
/**
|
||||
* The maximum number of items to show per page
|
||||
*
|
||||
* @var {Integer}
|
||||
*/
|
||||
@tracked limit = 20;
|
||||
|
||||
/**
|
||||
* The param to sort the data on, the param with prepended `-` is descending
|
||||
*
|
||||
* @var {String}
|
||||
*/
|
||||
@tracked sort = '-created_at';
|
||||
|
||||
/**
|
||||
* The selected notifications.
|
||||
*
|
||||
* @tracked
|
||||
* @var {Array}
|
||||
* @memberof NotificationsController
|
||||
*/
|
||||
@tracked selected = [];
|
||||
|
||||
/**
|
||||
* Creates an instance of NotificationsController.
|
||||
* @memberof NotificationsController
|
||||
*/
|
||||
constructor() {
|
||||
super(...arguments);
|
||||
|
||||
// listen for received notifications
|
||||
this.universe.on('notification.received', () => {
|
||||
this.router.refresh();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Action to select or deselect a notification.
|
||||
*
|
||||
* @param {NotificationModel} notification - The notification to select or deselect.
|
||||
* @memberof NotificationsController
|
||||
*/
|
||||
@action selectNotification(notification) {
|
||||
if (this.selected.includes(notification)) {
|
||||
this.selected.removeObject(notification);
|
||||
} else {
|
||||
this.selected.pushObject(notification);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Action to delete selected notifications.
|
||||
*
|
||||
* @memberof NotificationsController
|
||||
*/
|
||||
@action delete() {
|
||||
return this.fetch
|
||||
.delete('notifications/bulk-delete', {
|
||||
notifications: this.selected.map(({ id }) => id),
|
||||
})
|
||||
.then(() => {
|
||||
this.notifications.success(`${this.selected.length} notifications deleted`);
|
||||
this.universe.trigger('notifications.deleted', [...this.selected]);
|
||||
this.selected.clear();
|
||||
|
||||
return this.router.refresh();
|
||||
})
|
||||
.catch((error) => {
|
||||
this.notifications.serverError(error);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Action to mark selected notifications as read.
|
||||
*
|
||||
* @memberof NotificationsController
|
||||
*/
|
||||
@action read() {
|
||||
const unreadSelectedNotifications = this.selected.filter((notification) => notification.unread);
|
||||
|
||||
return this.fetch
|
||||
.put('notifications/mark-as-read', {
|
||||
notifications: unreadSelectedNotifications.map(({ id }) => id),
|
||||
})
|
||||
.then(() => {
|
||||
this.notifications.success(`${unreadSelectedNotifications.length} notifications marked as read`);
|
||||
this.universe.trigger('notifications.read', [...unreadSelectedNotifications]);
|
||||
this.selected.clear();
|
||||
|
||||
return this.router.refresh();
|
||||
})
|
||||
.catch((error) => {
|
||||
this.notifications.serverError(error);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Action to select all notifications.
|
||||
*
|
||||
* @memberof NotificationsController
|
||||
*/
|
||||
@action selectAll() {
|
||||
if (this.selected.length === this.model.length) {
|
||||
this.selected.clear();
|
||||
} else {
|
||||
this.selected = this.model.toArray();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Action to mark a notification as read.
|
||||
*
|
||||
* @param {NotificationModel} notification
|
||||
* @return {Promise}
|
||||
* @memberof NotificationsController
|
||||
*/
|
||||
@action markNotificationAsRead(notification) {
|
||||
return notification.markAsRead().then(() => {
|
||||
this.notifications.info('Notification marked as read.');
|
||||
this.universe.trigger('notifications.read', [notification]);
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -2,5 +2,10 @@ import Controller from '@ember/controller';
|
||||
import { inject as service } from '@ember/service';
|
||||
|
||||
export default class ConsoleSettingsController extends Controller {
|
||||
/**
|
||||
* INject the `universe` service
|
||||
*
|
||||
* @memberof ConsoleSettingsController
|
||||
*/
|
||||
@service universe;
|
||||
}
|
||||
|
||||
6
console/app/helpers/get-notification-key.js
Normal file
6
console/app/helpers/get-notification-key.js
Normal file
@@ -0,0 +1,6 @@
|
||||
import { helper } from '@ember/component/helper';
|
||||
import createNotificationKey from '../utils/create-notification-key';
|
||||
|
||||
export default helper(function getNotificationKey([definition, name]) {
|
||||
return createNotificationKey(definition, name);
|
||||
});
|
||||
@@ -10,7 +10,7 @@ export default class Company extends Model {
|
||||
@attr('string') owner_uuid;
|
||||
@attr('string') logo_uuid;
|
||||
@attr('string') backdrop_uuid;
|
||||
@attr('string') address_uuid;
|
||||
@attr('string') place_uuid;
|
||||
|
||||
/** @relationships */
|
||||
@belongsTo('file') logo;
|
||||
|
||||
53
console/app/models/notification.js
Normal file
53
console/app/models/notification.js
Normal file
@@ -0,0 +1,53 @@
|
||||
import Model, { attr } from '@ember-data/model';
|
||||
import { computed } from '@ember/object';
|
||||
|
||||
import { format, formatDistanceToNow } from 'date-fns';
|
||||
|
||||
export default class NotificationModel extends Model {
|
||||
@attr('string') notifiable_id;
|
||||
@attr('string') notifiable_type;
|
||||
|
||||
/** @attributes */
|
||||
@attr('string') type;
|
||||
@attr('raw') data;
|
||||
@attr('raw') meta;
|
||||
|
||||
/** @dates */
|
||||
@attr('date') read_at;
|
||||
@attr('date') created_at;
|
||||
|
||||
/** @computed */
|
||||
@computed('created_at') get createdAgo() {
|
||||
return formatDistanceToNow(this.created_at);
|
||||
}
|
||||
|
||||
@computed('created_at') get createdAt() {
|
||||
return format(this.created_at, 'PPP p');
|
||||
}
|
||||
|
||||
@computed('read_at') get readAt() {
|
||||
return format(this.read_at, 'PPP p');
|
||||
}
|
||||
|
||||
@computed('read_at') get isRead() {
|
||||
return this.read_at instanceof Date;
|
||||
}
|
||||
|
||||
@computed('read_at') get read() {
|
||||
return this.read_at instanceof Date;
|
||||
}
|
||||
|
||||
@computed('isRead') get unread() {
|
||||
return !this.get('isRead');
|
||||
}
|
||||
|
||||
/** @actions */
|
||||
markAsRead() {
|
||||
if (this.isRead) {
|
||||
return;
|
||||
}
|
||||
|
||||
this.set('read_at', new Date());
|
||||
return this.save();
|
||||
}
|
||||
}
|
||||
@@ -22,6 +22,7 @@ Router.map(function () {
|
||||
this.route('console', { path: '/' }, function () {
|
||||
this.route('home', { path: '/' });
|
||||
this.route('extensions');
|
||||
this.route('notifications');
|
||||
this.route('account', function () {
|
||||
this.route('virtual', { path: '/:slug/:view' });
|
||||
});
|
||||
@@ -41,28 +42,9 @@ Router.map(function () {
|
||||
this.route('socket');
|
||||
});
|
||||
this.route('branding');
|
||||
this.route('notifications');
|
||||
this.route('virtual', { path: '/:slug/:view' });
|
||||
});
|
||||
|
||||
this.mount('@fleetbase/dev-engine', {
|
||||
as: 'developers',
|
||||
path: 'developers'
|
||||
});
|
||||
|
||||
this.mount('@fleetbase/fleetops-engine', {
|
||||
as: 'fleet-ops',
|
||||
path: 'fleet-ops'
|
||||
});
|
||||
|
||||
this.mount('@fleetbase/iam-engine', {
|
||||
as: 'iam',
|
||||
path: 'iam'
|
||||
});
|
||||
|
||||
this.mount('@fleetbase/storefront-engine', {
|
||||
as: 'storefront',
|
||||
path: 'storefront'
|
||||
});
|
||||
});
|
||||
this.route('install');
|
||||
});
|
||||
|
||||
20
console/app/routes/console/admin/notifications.js
Normal file
20
console/app/routes/console/admin/notifications.js
Normal file
@@ -0,0 +1,20 @@
|
||||
import Route from '@ember/routing/route';
|
||||
import { inject as service } from '@ember/service';
|
||||
import { hash } from 'rsvp';
|
||||
import groupBy from '@fleetbase/ember-core/utils/group-by';
|
||||
|
||||
export default class ConsoleAdminNotificationsRoute extends Route {
|
||||
@service fetch;
|
||||
|
||||
model() {
|
||||
return hash({
|
||||
registry: this.fetch.get('notifications/registry'),
|
||||
notifiables: this.fetch.get('notifications/notifiables'),
|
||||
});
|
||||
}
|
||||
|
||||
setupController(controller, { registry, notifiables }) {
|
||||
controller.groupedNotifications = groupBy(registry, 'package');
|
||||
controller.notifiables = notifiables;
|
||||
}
|
||||
}
|
||||
27
console/app/routes/console/notifications.js
Normal file
27
console/app/routes/console/notifications.js
Normal file
@@ -0,0 +1,27 @@
|
||||
import Route from '@ember/routing/route';
|
||||
import { inject as service } from '@ember/service';
|
||||
|
||||
/**
|
||||
* Route for managing console notifications.
|
||||
*/
|
||||
export default class ConsoleNotificationsRoute extends Route {
|
||||
@service store;
|
||||
|
||||
queryParams = {
|
||||
page: { refreshModel: true },
|
||||
limit: { refreshModel: true },
|
||||
sort: { refreshModel: true },
|
||||
query: { refreshModel: true },
|
||||
created_at: { refreshModel: true },
|
||||
};
|
||||
|
||||
/**
|
||||
* Fetch the model data based on the specified parameters.
|
||||
*
|
||||
* @param {Object} params - Query parameters for fetching notifications.
|
||||
* @returns {Promise} - A promise that resolves with the notification data.
|
||||
*/
|
||||
model(params = {}) {
|
||||
return this.store.query('notification', params);
|
||||
}
|
||||
}
|
||||
5
console/app/serializers/notification.js
Normal file
5
console/app/serializers/notification.js
Normal file
@@ -0,0 +1,5 @@
|
||||
import ApplicationSerializer from '@fleetbase/ember-core/serializers/application';
|
||||
|
||||
export default class NotificationSerializer extends ApplicationSerializer {
|
||||
primaryKey = 'id';
|
||||
}
|
||||
@@ -3,6 +3,7 @@
|
||||
<EmberWormhole @to="sidebar-menu-items">
|
||||
<Layout::Sidebar::Item @route="console.admin.index" @icon="rectangle-list">Overview</Layout::Sidebar::Item>
|
||||
<Layout::Sidebar::Item @route="console.admin.branding" @icon="palette">Branding</Layout::Sidebar::Item>
|
||||
<Layout::Sidebar::Item @route="console.admin.notifications" @icon="bell">Notifications</Layout::Sidebar::Item>
|
||||
{{#each this.universe.adminMenuItems as |menuItem|}}
|
||||
<Layout::Sidebar::Item @onClick={{fn this.universe.transitionMenuItem "console.admin.virtual" menuItem}} @item={{menuItem}} @icon={{menuItem.icon}}>{{menuItem.title}}</Layout::Sidebar::Item>
|
||||
{{/each}}
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
{{page-title "Branding"}}
|
||||
<Layout::Section::Header @title="Branding" />
|
||||
<Layout::Section::Header @title="Branding">
|
||||
<Button @type="primary" @size="sm" @icon="save" @text="Save Changes" @onClick={{this.save}} @disabled={{this.isLoading}} @isLoading={{this.isLoading}} />
|
||||
</Layout::Section::Header>
|
||||
|
||||
<Layout::Section::Body class="overflow-y-scroll h-full">
|
||||
<div class="container mx-auto h-screen" {{increase-height-by 300}}>
|
||||
@@ -59,10 +61,6 @@
|
||||
</InputGroup>
|
||||
</form>
|
||||
</ContentPanel>
|
||||
|
||||
<div class="mt-3 flex items-center justify-end">
|
||||
<Button @type="primary" @size="lg" @icon="save" @text="Save Changes" @onClick={{this.save}} @disabled={{this.isLoading}} @isLoading={{this.isLoading}} />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</Layout::Section::Body>
|
||||
32
console/app/templates/console/admin/notifications.hbs
Normal file
32
console/app/templates/console/admin/notifications.hbs
Normal file
@@ -0,0 +1,32 @@
|
||||
{{page-title "Notifications"}}
|
||||
<Layout::Section::Header @title="Notifications">
|
||||
<Button @type="primary" @size="sm" @icon="save" @text="Save Changes" @onClick={{this.saveSettings}} @disabled={{this.isLoading}} @isLoading={{this.isLoading}} />
|
||||
</Layout::Section::Header>
|
||||
|
||||
<Layout::Section::Body class="overflow-y-scroll h-full">
|
||||
<div class="container mx-auto h-screen" {{increase-height-by 1200}}>
|
||||
<div class="max-w-3xl my-10 mx-auto space-y-4">
|
||||
{{#each-in this.groupedNotifications as |groupName notifications|}}
|
||||
<ContentPanel @title={{concat (smart-humanize groupName) " Notification Settings"}} @open={{true}} @pad={{true}} @panelBodyClass="bg-white dark:bg-gray-800">
|
||||
{{#each notifications as |notification|}}
|
||||
<InputGroup @name={{notification.name}} @helpText={{notification.description}}>
|
||||
<div class="fleetbase-model-select fleetbase-power-select ember-model-select">
|
||||
<PowerSelectMultiple
|
||||
@searchEnabled={{true}}
|
||||
@options={{this.notifiables}}
|
||||
@selected={{get this.notificationSettings (concat (get-notification-key notification.definition notification.name) ".notifiables")}}
|
||||
@onChange={{fn this.onSelectNotifiable notification}}
|
||||
@placeholder="Select notifiables..."
|
||||
@triggerClass="form-select form-input form-input-sm flex-1"
|
||||
as |notifiable|
|
||||
>
|
||||
{{notifiable.label}}
|
||||
</PowerSelectMultiple>
|
||||
</div>
|
||||
</InputGroup>
|
||||
{{/each}}
|
||||
</ContentPanel>
|
||||
{{/each-in}}
|
||||
</div>
|
||||
</div>
|
||||
</Layout::Section::Body>
|
||||
51
console/app/templates/console/notifications.hbs
Normal file
51
console/app/templates/console/notifications.hbs
Normal file
@@ -0,0 +1,51 @@
|
||||
<Layout::Section::Header @title="Notifications">
|
||||
<Button @icon="check-square" @type="default" @text="Select All" {{on "click" this.selectAll}} class="mr-2" />
|
||||
<Button @icon="envelope" @type="primary" @text="Mark as Read" {{on "click" this.read}} class="mr-2" />
|
||||
<Button @icon="trash" @type="danger" @text="Delete" {{on "click" this.delete}} />
|
||||
</Layout::Section::Header>
|
||||
|
||||
<Layout::Section::Body class="h-full w-full">
|
||||
<div class="max-h-[calc(100vh-10rem)] h-full w-full overflow-y-scroll">
|
||||
<div class="h-full w-full">
|
||||
{{#each @model as |notification|}}
|
||||
<div class="flex flex-row justify-between px-4 py-3 text-black dark:text-white border-b dark:border-gray-800 border-gray-200 text-sm hover:opacity-60 {{if notification.read_at 'bg-gray-100 dark:bg-gray-900' 'bg-white dark:bg-gray-800'}}">
|
||||
<div class="flex flex-row flex-1">
|
||||
<div class="flex items-center justify-center mr-6">
|
||||
<Checkbox @value={{includes notification this.selected}} @onToggle={{fn this.selectNotification notification}} />
|
||||
</div>
|
||||
<a href="javascript:;" class="flex-1 flex flex-row" {{on "click" (fn this.markNotificationAsRead notification)}}>
|
||||
<div class="mr-4 flex items-center justify-center">
|
||||
{{#if notification.read_at}}
|
||||
<FaIcon @icon="envelope-open" class="text-gray-200" />
|
||||
{{else}}
|
||||
<FaIcon @icon="envelope" class="text-gray-200" />
|
||||
{{/if}}
|
||||
</div>
|
||||
<div class="flex flex-col">
|
||||
<div class="flex flex-row space-x-2">
|
||||
<h1 class="text-sm font-semibold antialiased leading-4">{{notification.data.subject}}</h1>
|
||||
<div class="text-xs antialiased text-gray-900 dark:text-gray-200">- {{notification.data.message}}</div>
|
||||
</div>
|
||||
<div class="text-gray-300 text-xs antialiased mt-1">Received: {{notification.createdAgo}}</div>
|
||||
</div>
|
||||
</a>
|
||||
<div>
|
||||
<FaIcon @icon="clock" class="text-gray-400 dark:text-gray-700" @size="sm" />
|
||||
<span class="text-gray-400 dark:text-gray-600 text-xs">{{notification.createdAt}}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{else}}
|
||||
<div class="flex items-center justify-center h-full w-full">
|
||||
<p class="text-base text-gray-800 dark:text-gray-300 italic">No notifications to display.</p>
|
||||
</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
</div>
|
||||
</Layout::Section::Body>
|
||||
|
||||
<div class="fixed bottom-0 w-full">
|
||||
<Layout::Section::Footer>
|
||||
<Pagination @meta={{@model.meta}} @currentPage={{this.page}} @onPageChange={{fn (mut this.page)}} @tfootVerticalOffset="53" @tfootVerticalOffsetElements=".next-view-section-subheader" />
|
||||
</Layout::Section::Footer>
|
||||
</div>
|
||||
8
console/app/utils/create-notification-key.js
Normal file
8
console/app/utils/create-notification-key.js
Normal file
@@ -0,0 +1,8 @@
|
||||
import { camelize } from '@ember/string';
|
||||
|
||||
export default function createNotificationKey(definition, name) {
|
||||
const withoutSlashes = definition.replace(/[\W_]+/g, '');
|
||||
const key = `${camelize(withoutSlashes)}__${camelize(name)}`;
|
||||
|
||||
return key;
|
||||
}
|
||||
@@ -43,7 +43,8 @@ module.exports = function (environment) {
|
||||
driverImage: getenv('DEFAULT_DRIVER_IMAGE', 'https://s3.ap-southeast-1.amazonaws.com/flb-assets/static/no-avatar.png'),
|
||||
userImage: getenv('DEFAULT_USER_IMAGE', 'https://s3.ap-southeast-1.amazonaws.com/flb-assets/static/no-avatar.png'),
|
||||
contactImage: getenv('DEFAULT_CONTACT_IMAGE', 'https://s3.ap-southeast-1.amazonaws.com/flb-assets/static/no-avatar.png'),
|
||||
vehicleImage: getenv('DEFAULT_VEHICLE_IMAGE', 'https://flb-assets.s3.ap-southeast-1.amazonaws.com/static/vehicle-icons/light_commercial_van.svg'),
|
||||
vendorImage: getenv('DEFAULT_VENDOR_IMAGE', 'https://s3.ap-southeast-1.amazonaws.com/flb-assets/static/no-avatar.png'),
|
||||
vehicleImage: getenv('DEFAULT_VEHICLE_IMAGE', 'https://s3.ap-southeast-1.amazonaws.com/flb-assets/static/vehicle-placeholder.png'),
|
||||
vehicleAvatar: getenv('DEFAUL_VEHICLE_AVATAR', 'https://flb-assets.s3-ap-southeast-1.amazonaws.com/static/vehicle-icons/mini_bus.svg'),
|
||||
},
|
||||
|
||||
|
||||
@@ -43,7 +43,7 @@ module.exports = function (defaults) {
|
||||
postcssMixins,
|
||||
postcssPresetEnv({ stage: 1 }),
|
||||
postcssEach,
|
||||
tailwind('./tailwind.js'),
|
||||
tailwind('./tailwind.config.js'),
|
||||
autoprefixer,
|
||||
],
|
||||
},
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@fleetbase/console",
|
||||
"version": "0.2.6",
|
||||
"version": "0.2.9",
|
||||
"private": true,
|
||||
"description": "Fleetbase Console",
|
||||
"repository": "",
|
||||
@@ -25,13 +25,13 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@ember/legacy-built-in-components": "^0.4.1",
|
||||
"@fleetbase/ember-core": "^0.1.6",
|
||||
"@fleetbase/ember-ui": "^0.2.1",
|
||||
"@fleetbase/ember-core": "^0.1.7",
|
||||
"@fleetbase/ember-ui": "^0.2.4",
|
||||
"@fleetbase/dev-engine": "^0.1.9",
|
||||
"@fleetbase/iam-engine": "^0.0.7",
|
||||
"@fleetbase/fleetops-engine": "^0.3.0",
|
||||
"@fleetbase/fleetops-data": "^0.1.1",
|
||||
"@fleetbase/storefront-engine": "^0.2.2",
|
||||
"@fleetbase/fleetops-engine": "^0.3.3",
|
||||
"@fleetbase/fleetops-data": "^0.1.3",
|
||||
"@fleetbase/storefront-engine": "^0.2.4",
|
||||
"@fleetbase/leaflet-routing-machine": "^3.2.16",
|
||||
"@fortawesome/ember-fontawesome": "^0.4.1",
|
||||
"ember-intl": "^6.0.0-beta.6",
|
||||
@@ -67,7 +67,7 @@
|
||||
"dragula": "^3.7.3",
|
||||
"ember-auto-import": "^2.4.2",
|
||||
"ember-cli": "~4.6.0",
|
||||
"ember-cli-app-version": "^5.0.0",
|
||||
"ember-cli-app-version": "^6.0.1",
|
||||
"ember-cli-babel": "^7.26.11",
|
||||
"ember-cli-dependency-checker": "^3.3.1",
|
||||
"ember-cli-dotenv": "^3.1.0",
|
||||
@@ -125,9 +125,9 @@
|
||||
},
|
||||
"pnpm": {
|
||||
"overrides": {
|
||||
"@fleetbase/fleetops-data": "^0.1.1",
|
||||
"@fleetbase/ember-core": "^0.1.6",
|
||||
"@fleetbase/ember-ui": "^0.2.1"
|
||||
"@fleetbase/fleetops-data": "^0.1.3",
|
||||
"@fleetbase/ember-core": "^0.1.7",
|
||||
"@fleetbase/ember-ui": "^0.2.4"
|
||||
}
|
||||
},
|
||||
"prettier": {
|
||||
|
||||
1992
console/pnpm-lock.yaml
generated
1992
console/pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load Diff
@@ -22,6 +22,7 @@ Router.map(function () {
|
||||
this.route('console', { path: '/' }, function () {
|
||||
this.route('home', { path: '/' });
|
||||
this.route('extensions');
|
||||
this.route('notifications');
|
||||
this.route('account', function () {
|
||||
this.route('virtual', { path: '/:slug/:view' });
|
||||
});
|
||||
@@ -41,6 +42,7 @@ Router.map(function () {
|
||||
this.route('socket');
|
||||
});
|
||||
this.route('branding');
|
||||
this.route('notifications');
|
||||
this.route('virtual', { path: '/:slug/:view' });
|
||||
});
|
||||
});
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
import { module, test } from 'qunit';
|
||||
import { setupRenderingTest } from '@fleetbase/console/tests/helpers';
|
||||
import { render } from '@ember/test-helpers';
|
||||
import { hbs } from 'ember-cli-htmlbars';
|
||||
|
||||
module('Integration | Component | notification-list', function (hooks) {
|
||||
setupRenderingTest(hooks);
|
||||
|
||||
test('it renders', async function (assert) {
|
||||
// Set any properties with this.set('myProperty', 'value');
|
||||
// Handle any actions with this.set('myAction', function(val) { ... });
|
||||
|
||||
await render(hbs`<NotificationList />`);
|
||||
|
||||
assert.dom(this.element).hasText('');
|
||||
|
||||
// Template block usage:
|
||||
await render(hbs`
|
||||
<NotificationList>
|
||||
template block text
|
||||
</NotificationList>
|
||||
`);
|
||||
|
||||
assert.dom(this.element).hasText('template block text');
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,26 @@
|
||||
import { module, test } from 'qunit';
|
||||
import { setupRenderingTest } from '@fleetbase/console/tests/helpers';
|
||||
import { render } from '@ember/test-helpers';
|
||||
import { hbs } from 'ember-cli-htmlbars';
|
||||
|
||||
module('Integration | Component | notifications-list', function (hooks) {
|
||||
setupRenderingTest(hooks);
|
||||
|
||||
test('it renders', async function (assert) {
|
||||
// Set any properties with this.set('myProperty', 'value');
|
||||
// Handle any actions with this.set('myAction', function(val) { ... });
|
||||
|
||||
await render(hbs`<NotificationsList />`);
|
||||
|
||||
assert.dom(this.element).hasText('');
|
||||
|
||||
// Template block usage:
|
||||
await render(hbs`
|
||||
<NotificationsList>
|
||||
template block text
|
||||
</NotificationsList>
|
||||
`);
|
||||
|
||||
assert.dom(this.element).hasText('template block text');
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,17 @@
|
||||
import { module, test } from 'qunit';
|
||||
import { setupRenderingTest } from '@fleetbase/console/tests/helpers';
|
||||
import { render } from '@ember/test-helpers';
|
||||
import { hbs } from 'ember-cli-htmlbars';
|
||||
|
||||
module('Integration | Helper | get-notification-key', function (hooks) {
|
||||
setupRenderingTest(hooks);
|
||||
|
||||
// TODO: Replace this with your real tests.
|
||||
test('it renders', async function (assert) {
|
||||
this.set('inputValue', '1234');
|
||||
|
||||
await render(hbs`{{get-notification-key this.inputValue}}`);
|
||||
|
||||
assert.dom(this.element).hasText('1234');
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,12 @@
|
||||
import { module, test } from 'qunit';
|
||||
import { setupTest } from '@fleetbase/console/tests/helpers';
|
||||
|
||||
module('Unit | Controller | console/admin/notifications', function (hooks) {
|
||||
setupTest(hooks);
|
||||
|
||||
// TODO: Replace this with your real tests.
|
||||
test('it exists', function (assert) {
|
||||
let controller = this.owner.lookup('controller:console/admin/notifications');
|
||||
assert.ok(controller);
|
||||
});
|
||||
});
|
||||
12
console/tests/unit/controllers/console/notifications-test.js
Normal file
12
console/tests/unit/controllers/console/notifications-test.js
Normal file
@@ -0,0 +1,12 @@
|
||||
import { module, test } from 'qunit';
|
||||
import { setupTest } from '@fleetbase/console/tests/helpers';
|
||||
|
||||
module('Unit | Controller | console/notifications', function (hooks) {
|
||||
setupTest(hooks);
|
||||
|
||||
// TODO: Replace this with your real tests.
|
||||
test('it exists', function (assert) {
|
||||
let controller = this.owner.lookup('controller:console/notifications');
|
||||
assert.ok(controller);
|
||||
});
|
||||
});
|
||||
14
console/tests/unit/models/notification-test.js
Normal file
14
console/tests/unit/models/notification-test.js
Normal file
@@ -0,0 +1,14 @@
|
||||
import { module, test } from 'qunit';
|
||||
|
||||
import { setupTest } from '@fleetbase/console/tests/helpers';
|
||||
|
||||
module('Unit | Model | notification', function (hooks) {
|
||||
setupTest(hooks);
|
||||
|
||||
// Replace this with your real tests.
|
||||
test('it exists', function (assert) {
|
||||
let store = this.owner.lookup('service:store');
|
||||
let model = store.createRecord('notification', {});
|
||||
assert.ok(model);
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,11 @@
|
||||
import { module, test } from 'qunit';
|
||||
import { setupTest } from '@fleetbase/console/tests/helpers';
|
||||
|
||||
module('Unit | Route | console/admin/notifications', function (hooks) {
|
||||
setupTest(hooks);
|
||||
|
||||
test('it exists', function (assert) {
|
||||
let route = this.owner.lookup('route:console/admin/notifications');
|
||||
assert.ok(route);
|
||||
});
|
||||
});
|
||||
11
console/tests/unit/routes/console/notifications-test.js
Normal file
11
console/tests/unit/routes/console/notifications-test.js
Normal file
@@ -0,0 +1,11 @@
|
||||
import { module, test } from 'qunit';
|
||||
import { setupTest } from '@fleetbase/console/tests/helpers';
|
||||
|
||||
module('Unit | Route | console/notifications', function (hooks) {
|
||||
setupTest(hooks);
|
||||
|
||||
test('it exists', function (assert) {
|
||||
let route = this.owner.lookup('route:console/notifications');
|
||||
assert.ok(route);
|
||||
});
|
||||
});
|
||||
24
console/tests/unit/serializers/notification-test.js
Normal file
24
console/tests/unit/serializers/notification-test.js
Normal file
@@ -0,0 +1,24 @@
|
||||
import { module, test } from 'qunit';
|
||||
|
||||
import { setupTest } from '@fleetbase/console/tests/helpers';
|
||||
|
||||
module('Unit | Serializer | notification', function (hooks) {
|
||||
setupTest(hooks);
|
||||
|
||||
// Replace this with your real tests.
|
||||
test('it exists', function (assert) {
|
||||
let store = this.owner.lookup('service:store');
|
||||
let serializer = store.serializerFor('notification');
|
||||
|
||||
assert.ok(serializer);
|
||||
});
|
||||
|
||||
test('it serializes records', function (assert) {
|
||||
let store = this.owner.lookup('service:store');
|
||||
let record = store.createRecord('notification', {});
|
||||
|
||||
let serializedRecord = record.serialize();
|
||||
|
||||
assert.ok(serializedRecord);
|
||||
});
|
||||
});
|
||||
10
console/tests/unit/utils/create-notification-key-test.js
Normal file
10
console/tests/unit/utils/create-notification-key-test.js
Normal file
@@ -0,0 +1,10 @@
|
||||
import createNotificationKey from '@fleetbase/console/utils/create-notification-key';
|
||||
import { module, test } from 'qunit';
|
||||
|
||||
module('Unit | Utility | create-notification-key', function () {
|
||||
// TODO: Replace this with your real tests.
|
||||
test('it works', function (assert) {
|
||||
let result = createNotificationKey();
|
||||
assert.ok(result);
|
||||
});
|
||||
});
|
||||
Submodule packages/core-api updated: b47debd7b3...e10f6e69d1
Submodule packages/ember-core updated: f17cab2159...85a81456f9
Submodule packages/ember-ui updated: 76b784e2b1...c4c9c184f0
Submodule packages/fleetops updated: 73909ae258...5ce11e275d
Submodule packages/fleetops-data updated: 063ef50603...6d0ab56bdd
Submodule packages/storefront updated: affa19ebee...df155f5b3e
Reference in New Issue
Block a user