- upgrade react router to v7 - migrate imports from react-router-dom to react-router - add i18next-json-sync tasks - clean up Dockerfile
This commit is contained in:
parent
3bc2cd20eb
commit
cb9e1fdec5
37 changed files with 1787 additions and 8773 deletions
|
@ -6,7 +6,6 @@ on:
|
|||
- master
|
||||
env:
|
||||
IMAGE_TAG: varakh/upda
|
||||
REVISION: ${{ github.sha }}
|
||||
jobs:
|
||||
build:
|
||||
runs-on: docker
|
||||
|
|
|
@ -11,7 +11,6 @@ env:
|
|||
FORGEJO_URL: https://git.myservermanager.com
|
||||
FORGEJO_FQDN: git.myservermanager.com
|
||||
FORGEJO_REPO: varakh/upda
|
||||
REVISION: ${{ github.sha }}
|
||||
jobs:
|
||||
release:
|
||||
runs-on: docker
|
||||
|
|
|
@ -4,7 +4,7 @@ Changes adhere to [semantic versioning](https://semver.org).
|
|||
|
||||
## [4.0.1] - UNRELEASED
|
||||
|
||||
* ...
|
||||
* Library updates
|
||||
|
||||
## [4.0.0] - 2024/10/25
|
||||
|
||||
|
|
|
@ -23,7 +23,6 @@ FROM alpine:3.20
|
|||
LABEL maintainer="Varakh <varakh@varakh.de>" \
|
||||
description="upda" \
|
||||
org.opencontainers.image.authors="Varakh" \
|
||||
org.opencontainers.image.revision="${REVISION}" \
|
||||
org.opencontainers.image.vendor="Varakh" \
|
||||
org.opencontainers.image.title="upda" \
|
||||
org.opencontainers.image.description="upda" \
|
||||
|
|
18
README.md
18
README.md
|
@ -35,6 +35,24 @@ There's also a [embedded frontend](#embedded-frontend).
|
|||
* Consider reading [Effective Go](https://go.dev/doc/effective_go)
|
||||
* Consider reading [100 Go Mistakes and How to Avoid Them](https://100go.co/)
|
||||
|
||||
### Translation files
|
||||
|
||||
Pipeline checks for existing i18n keys, if you need to manually sync any language file, run `npm run i18n-sync`.
|
||||
|
||||
### Dependencies
|
||||
|
||||
To track unused dependencies
|
||||
|
||||
```shell
|
||||
# install (if not yet present)
|
||||
npm install -g depcheck typescript
|
||||
|
||||
# run
|
||||
depcheck
|
||||
```
|
||||
|
||||
Be aware that some are false positives and actually required.
|
||||
|
||||
## Embedded Frontend
|
||||
|
||||
_upda_ includes a frontend in a monorepo fashion inside `server/web/`. For production (binary and OCI), it's
|
||||
|
|
12
go.mod
12
go.mod
|
@ -6,24 +6,24 @@ toolchain go1.22.3
|
|||
|
||||
require (
|
||||
github.com/Depado/ginprom v1.8.1
|
||||
github.com/adrg/xdg v0.5.1
|
||||
github.com/adrg/xdg v0.5.3
|
||||
github.com/containrrr/shoutrrr v0.8.0
|
||||
github.com/gin-contrib/cors v1.7.2
|
||||
github.com/gin-contrib/static v1.1.2
|
||||
github.com/gin-contrib/zap v1.1.4
|
||||
github.com/gin-gonic/gin v1.10.0
|
||||
github.com/go-co-op/gocron-redis-lock/v2 v2.0.1
|
||||
github.com/go-co-op/gocron/v2 v2.12.1
|
||||
github.com/go-playground/validator/v10 v10.22.1
|
||||
github.com/go-co-op/gocron/v2 v2.12.4
|
||||
github.com/go-playground/validator/v10 v10.23.0
|
||||
github.com/go-redsync/redsync/v4 v4.13.0
|
||||
github.com/go-resty/resty/v2 v2.15.3
|
||||
github.com/go-resty/resty/v2 v2.16.2
|
||||
github.com/google/uuid v1.6.0
|
||||
github.com/redis/go-redis/v9 v9.7.0
|
||||
github.com/stretchr/testify v1.9.0
|
||||
github.com/stretchr/testify v1.10.0
|
||||
github.com/urfave/cli/v2 v2.27.5
|
||||
go.uber.org/automaxprocs v1.6.0
|
||||
go.uber.org/zap v1.27.0
|
||||
gorm.io/driver/postgres v1.5.9
|
||||
gorm.io/driver/postgres v1.5.10
|
||||
gorm.io/driver/sqlite v1.5.6
|
||||
gorm.io/gorm v1.25.12
|
||||
moul.io/zapgorm2 v1.3.0
|
||||
|
|
12
go.sum
12
go.sum
|
@ -10,6 +10,8 @@ github.com/Microsoft/hcsshim v0.11.1 h1:hJ3s7GbWlGK4YVV92sO88BQSyF4ZLVy7/awqOlPx
|
|||
github.com/Microsoft/hcsshim v0.11.1/go.mod h1:nFJmaO4Zr5Y7eADdFOpYswDDlNVbvcIJJNJLECr5JQg=
|
||||
github.com/adrg/xdg v0.5.1 h1:Im8iDbEFARltY09yOJlSGu4Asjk2vF85+3Dyru8uJ0U=
|
||||
github.com/adrg/xdg v0.5.1/go.mod h1:nlTsY+NNiCBGCK2tpm09vRqfVzrc2fLmXGpBLF0zlTQ=
|
||||
github.com/adrg/xdg v0.5.3 h1:xRnxJXne7+oWDatRhR1JLnvuccuIeCoBu2rtuLqQB78=
|
||||
github.com/adrg/xdg v0.5.3/go.mod h1:nlTsY+NNiCBGCK2tpm09vRqfVzrc2fLmXGpBLF0zlTQ=
|
||||
github.com/appleboy/gofight/v2 v2.1.2 h1:VOy3jow4vIK8BRQJoC/I9muxyYlJ2yb9ht2hZoS3rf4=
|
||||
github.com/appleboy/gofight/v2 v2.1.2/go.mod h1:frW+U1QZEdDgixycTj4CygQ48yLTUhplt43+Wczp3rw=
|
||||
github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
|
||||
|
@ -73,6 +75,8 @@ github.com/go-co-op/gocron-redis-lock/v2 v2.0.1 h1:xM+mzO88L+kODvY4vIUVLlZuyWazK
|
|||
github.com/go-co-op/gocron-redis-lock/v2 v2.0.1/go.mod h1:FSHZ13f4bfH37RpJi9l3vl2GTiJRUI6xTDbUvXLoqrY=
|
||||
github.com/go-co-op/gocron/v2 v2.12.1 h1:dCIIBFbzhWKdgXeEifBjHPzgQ1hoWhjS4289Hjjy1uw=
|
||||
github.com/go-co-op/gocron/v2 v2.12.1/go.mod h1:xY7bJxGazKam1cz04EebrlP4S9q4iWdiAylMGP3jY9w=
|
||||
github.com/go-co-op/gocron/v2 v2.12.4 h1:h1HWApo3T+61UrZqEY2qG1LUpDnB7tkYITxf6YIK354=
|
||||
github.com/go-co-op/gocron/v2 v2.12.4/go.mod h1:xY7bJxGazKam1cz04EebrlP4S9q4iWdiAylMGP3jY9w=
|
||||
github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0=
|
||||
github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
|
||||
github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY=
|
||||
|
@ -85,6 +89,8 @@ github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJn
|
|||
github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY=
|
||||
github.com/go-playground/validator/v10 v10.22.1 h1:40JcKH+bBNGFczGuoBYgX4I6m/i27HYW8P9FDk5PbgA=
|
||||
github.com/go-playground/validator/v10 v10.22.1/go.mod h1:dbuPbCMFw/DrkbEynArYaCwl3amGuJotoKCe95atGMM=
|
||||
github.com/go-playground/validator/v10 v10.23.0 h1:/PwmTwZhS0dPkav3cdK9kV1FsAmrL8sThn8IHr/sO+o=
|
||||
github.com/go-playground/validator/v10 v10.23.0/go.mod h1:dbuPbCMFw/DrkbEynArYaCwl3amGuJotoKCe95atGMM=
|
||||
github.com/go-redis/redis v6.15.9+incompatible h1:K0pv1D7EQUjfyoMql+r/jZqCLizCGKFlFgcHWWmHQjg=
|
||||
github.com/go-redis/redis v6.15.9+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA=
|
||||
github.com/go-redis/redis/v7 v7.4.1 h1:PASvf36gyUpr2zdOUS/9Zqc80GbM+9BDyiJSJDDOrTI=
|
||||
|
@ -95,6 +101,8 @@ github.com/go-redsync/redsync/v4 v4.13.0 h1:49X6GJfnbLGaIpBBREM/zA4uIMDXKAh1NDkv
|
|||
github.com/go-redsync/redsync/v4 v4.13.0/go.mod h1:HMW4Q224GZQz6x1Xc7040Yfgacukdzu7ifTDAKiyErQ=
|
||||
github.com/go-resty/resty/v2 v2.15.3 h1:bqff+hcqAflpiF591hhJzNdkRsFhlB96CYfBwSFvql8=
|
||||
github.com/go-resty/resty/v2 v2.15.3/go.mod h1:0fHAoK7JoBy/Ch36N8VFeMsK7xQOHhvWaC3iOktwmIU=
|
||||
github.com/go-resty/resty/v2 v2.16.2 h1:CpRqTjIzq/rweXUt9+GxzzQdlkqMdt8Lm/fuK/CAbAg=
|
||||
github.com/go-resty/resty/v2 v2.16.2/go.mod h1:0fHAoK7JoBy/Ch36N8VFeMsK7xQOHhvWaC3iOktwmIU=
|
||||
github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI=
|
||||
github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls=
|
||||
github.com/goccy/go-json v0.10.3 h1:KZ5WoDbxAIgm2HNbYckL0se1fHD6rz5j4ywS6ebzDqA=
|
||||
|
@ -234,6 +242,8 @@ github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o
|
|||
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
|
||||
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
|
||||
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
|
||||
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
|
||||
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
|
||||
github.com/stvp/tempredis v0.0.0-20181119212430-b82af8480203 h1:QVqDTf3h2WHt08YuiTGPZLls0Wq99X9bWd0Q5ZSBesM=
|
||||
github.com/stvp/tempredis v0.0.0-20181119212430-b82af8480203/go.mod h1:oqN97ltKNihBbwlX8dLpwxCl3+HnXKV/R0e+sRLd9C8=
|
||||
github.com/testcontainers/testcontainers-go v0.26.0 h1:uqcYdoOHBy1ca7gKODfBd9uTHVK3a7UL848z09MVZ0c=
|
||||
|
@ -333,6 +343,8 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
|||
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||
gorm.io/driver/postgres v1.5.9 h1:DkegyItji119OlcaLjqN11kHoUgZ/j13E0jkJZgD6A8=
|
||||
gorm.io/driver/postgres v1.5.9/go.mod h1:DX3GReXH+3FPWGrrgffdvCk3DQ1dwDPdmbenSkweRGI=
|
||||
gorm.io/driver/postgres v1.5.10 h1:7Lggqempgy496c0WfHXsYWxk3Th+ZcW66/21QhVFdeE=
|
||||
gorm.io/driver/postgres v1.5.10/go.mod h1:DX3GReXH+3FPWGrrgffdvCk3DQ1dwDPdmbenSkweRGI=
|
||||
gorm.io/driver/sqlite v1.5.6 h1:fO/X46qn5NUEEOZtnjJRWRzZMe8nqJiQ9E+0hi+hKQE=
|
||||
gorm.io/driver/sqlite v1.5.6/go.mod h1:U+J8craQU6Fzkcvu8oLeAQmi50TkwPEhHDEjQZXDah4=
|
||||
gorm.io/gorm v1.23.6/go.mod h1:l2lP/RyAtc1ynaTjFksBde/O8v9oOGIApu2/xRitmZk=
|
||||
|
|
9597
server/web/package-lock.json
generated
9597
server/web/package-lock.json
generated
File diff suppressed because it is too large
Load diff
|
@ -22,84 +22,74 @@
|
|||
"lintfix": "eslint --fix \"./src/**/*.{tsx,ts}\"",
|
||||
"lint:style": "stylelint \"./src/**/*.less\"",
|
||||
"lint-style-fix": "stylelint \"./src/**/*.less\" --fix",
|
||||
"checkstyle": "npm run checkstyle:ts && npm run checkstyle:less && npm run checkstyle:format",
|
||||
"checkstyle": "npm run checkstyle:ts && npm run checkstyle:less && npm run checkstyle:format && npm run checkstyle:i18n",
|
||||
"checkstyle:format": "npm run format:check",
|
||||
"checkstyle:ts": "eslint \"./src/**/*.{ts,tsx}\" -f checkstyle > ci/eslint.xml",
|
||||
"checkstyle:less": "stylelint \"./src/**/*.less\"",
|
||||
"checkstyle:i18n": "sync-i18n --check --files '**/translations/*.json' --primary en --space 2 --lineendings LF",
|
||||
"i18n-sync": "sync-i18n --files '**/translations/*.json' --primary en --space 2 --lineendings LF",
|
||||
"clean": "npx --quiet rimraf build && npx --quiet rimraf node_modules"
|
||||
},
|
||||
"dependencies": {
|
||||
"@ant-design/icons": "^5.5.1",
|
||||
"@ant-design/pro-layout": "^7.21.1",
|
||||
"@reduxjs/toolkit": "^2.3.0",
|
||||
"@testing-library/react": "^16.0.1",
|
||||
"@testing-library/user-event": "^14.5.2",
|
||||
"@ant-design/icons": "^5.5.2",
|
||||
"@ant-design/pro-layout": "^7.21.2",
|
||||
"@reduxjs/toolkit": "^2.4.0",
|
||||
"@types/react": "^18.3.12",
|
||||
"@types/react-dom": "^18.3.1",
|
||||
"@uiw/react-md-editor": "^4.0.4",
|
||||
"antd": "^5.21.5",
|
||||
"antd": "^5.22.2",
|
||||
"file-saver": "^2.0.5",
|
||||
"html-react-parser": "^5.1.18",
|
||||
"i18next": "^23.16.3",
|
||||
"i18next": "^24.0.2",
|
||||
"i18next-browser-languagedetector": "^8.0.0",
|
||||
"linkify-html": "^4.1.3",
|
||||
"linkifyjs": "^4.1.3",
|
||||
"linkify-html": "^4.1.4",
|
||||
"linkifyjs": "^4.1.4",
|
||||
"lodash": "^4.17.21",
|
||||
"moment-timezone": "^0.5.46",
|
||||
"react": "^18.3.1",
|
||||
"react-copy-to-clipboard": "^5.1.0",
|
||||
"react-dom": "^18.3.1",
|
||||
"react-i18next": "^15.1.0",
|
||||
"react-i18next": "^15.1.3",
|
||||
"react-redux": "^9.1.2",
|
||||
"react-router-dom": "^6.27.0",
|
||||
"react-virtualized": "^9.22.5",
|
||||
"typescript": "^5.6.3"
|
||||
"react-router": "^7.0.1",
|
||||
"typescript": "^5.7.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/register": "^7.25.9",
|
||||
"@eslint/compat": "^1.2.1",
|
||||
"@eslint/js": "^9.13.0",
|
||||
"@eslint/compat": "^1.2.3",
|
||||
"@eslint/js": "^9.16.0",
|
||||
"@types/file-saver": "^2.0.7",
|
||||
"@types/lodash": "^4.17.12",
|
||||
"@types/node": "^20.16.5",
|
||||
"@types/react-copy-to-clipboard": "^5.0.7",
|
||||
"@types/react-virtualized": "^9.21.30",
|
||||
"@typescript-eslint/eslint-plugin": "^8.11.0",
|
||||
"@typescript-eslint/parser": "^8.11.0",
|
||||
"@vitejs/plugin-react": "^4.3.3",
|
||||
"@vitest/coverage-v8": "^2.1.3",
|
||||
"babel-plugin-import": "^1.13.8",
|
||||
"c8": "^10.1.2",
|
||||
"eslint": "^9.13.0",
|
||||
"@types/lodash": "^4.17.13",
|
||||
"@types/node": "^20.16.15",
|
||||
"@typescript-eslint/eslint-plugin": "^8.16.0",
|
||||
"@typescript-eslint/parser": "^8.16.0",
|
||||
"@vitejs/plugin-react": "^4.3.4",
|
||||
"@vitest/coverage-v8": "^2.1.6",
|
||||
"eslint": "^9.16.0",
|
||||
"eslint-config-prettier": "^9.1.0",
|
||||
"eslint-formatter-checkstyle": "^8.40.0",
|
||||
"eslint-import-resolver-typescript": "^3.6.3",
|
||||
"eslint-plugin-disable": "^2.0.3",
|
||||
"eslint-plugin-import": "^2.31.0",
|
||||
"eslint-plugin-jsx-a11y": "^6.10.1",
|
||||
"eslint-plugin-jsx-a11y": "^6.10.2",
|
||||
"eslint-plugin-prettier": "^5.2.1",
|
||||
"eslint-plugin-react": "^7.37.2",
|
||||
"eslint-plugin-react-hooks": "^5.0.0",
|
||||
"eslint-plugin-sonarjs": "^2.0.4",
|
||||
"eslint-plugin-testing-library": "^6.4.0",
|
||||
"eslint-plugin-testing-library": "^7.0.0",
|
||||
"i18next-json-sync": "^3.1.2",
|
||||
"jsdom": "^25.0.1",
|
||||
"less": "^4.2.0",
|
||||
"less-loader": "^12.2.0",
|
||||
"less": "^4.2.1",
|
||||
"postcss-less": "^6.0.0",
|
||||
"postcss-markdown": "^1.2.0",
|
||||
"prettier": "^3.3.3",
|
||||
"prettier": "^3.4.1",
|
||||
"rimraf": "^6.0.1",
|
||||
"stylelint": "^16.10.0",
|
||||
"stylelint": "^16.11.0",
|
||||
"stylelint-config-standard": "^36.0.1",
|
||||
"stylelint-declaration-block-no-ignored-properties": "^2.8.0",
|
||||
"stylelint-order": "^6.0.4",
|
||||
"stylelint-prettier": "^5.0.2",
|
||||
"vite": "^5.4.10",
|
||||
"vite-plugin-eslint2": "^5.0.1",
|
||||
"vite": "^5.4.11",
|
||||
"vite-plugin-eslint2": "^5.0.3",
|
||||
"vite-plugin-stylelint": "^5.3.1",
|
||||
"vite-plugin-svgr": "^4.2.0",
|
||||
"vite-tsconfig-paths": "^5.0.1",
|
||||
"vitest": "^2.1.3"
|
||||
"vite-plugin-svgr": "^4.3.0",
|
||||
"vite-tsconfig-paths": "^5.1.3",
|
||||
"vitest": "^2.1.6"
|
||||
},
|
||||
"browserslist": {
|
||||
"production": [
|
||||
|
|
|
@ -4,4 +4,5 @@ enum ApiErrorCodes {
|
|||
CONFLICT = 'Conflict',
|
||||
ILLEGAL_ARGUMENT = 'IllegalArgument'
|
||||
}
|
||||
|
||||
export default ApiErrorCodes;
|
||||
|
|
|
@ -8,4 +8,5 @@ enum ApiTags {
|
|||
ActionInvocations = 'ActionInvocations',
|
||||
Events = 'Events'
|
||||
}
|
||||
|
||||
export default ApiTags;
|
||||
|
|
|
@ -4,4 +4,5 @@ enum HttpStatusCode {
|
|||
STATUS_403 = 403,
|
||||
STATUS_404 = 404
|
||||
}
|
||||
|
||||
export default HttpStatusCode;
|
||||
|
|
|
@ -3,6 +3,7 @@ import LanguageDetector from 'i18next-browser-languagedetector';
|
|||
import { initReactI18next } from 'react-i18next';
|
||||
|
||||
import en from './translations/en.json';
|
||||
import { isDevelopment } from '../utils/envHelper';
|
||||
|
||||
const resources = {
|
||||
en: {
|
||||
|
@ -18,7 +19,7 @@ i18next
|
|||
resources,
|
||||
lng: 'en',
|
||||
fallbackLng: 'en',
|
||||
debug: import.meta.env.DEV,
|
||||
debug: isDevelopment(),
|
||||
interpolation: {
|
||||
escapeValue: false // not needed for react as it escapes by default
|
||||
},
|
||||
|
|
|
@ -1,464 +1,464 @@
|
|||
{
|
||||
"version": {
|
||||
"version": "Version",
|
||||
"number": "4.0.1"
|
||||
},
|
||||
"common": {
|
||||
"404_title": "Not found.",
|
||||
"404": "The page you've requested doesn't exist.",
|
||||
"back_home": "Go back",
|
||||
"home": "Home",
|
||||
"login": "Login",
|
||||
"updates": "Updates",
|
||||
"webhooks": "Webhooks",
|
||||
"actions": "Actions",
|
||||
"action_invocations": "Action History",
|
||||
"secrets": "Secrets",
|
||||
"events": "Events",
|
||||
"logout": "Logout"
|
||||
},
|
||||
"auth": {
|
||||
"loading": "Loading..."
|
||||
},
|
||||
"health": {
|
||||
"reload": "Reload",
|
||||
"generic_error_title": "Services unhealthy",
|
||||
"generic_error_content": "Health check failed, please try again later."
|
||||
},
|
||||
"login": {
|
||||
"title": "Login",
|
||||
"username": "Username",
|
||||
"password": "Password",
|
||||
"username_required": "Username is required",
|
||||
"password_required": "Password is required",
|
||||
"submit": "Submit",
|
||||
"reset": "Reset",
|
||||
"unauthorized": "Username or password are incorrect.",
|
||||
"default_message": "Error while logging in."
|
||||
},
|
||||
"update": {
|
||||
"handle_pending": "Recently updated",
|
||||
"created_at": "Created on {{created}}",
|
||||
"created_at_diff": "Updated on {{updated}}, but initially submitted on {{created}}",
|
||||
"help_approve": "Approve",
|
||||
"help_ignore": "Ignore",
|
||||
"help_pending": "Reset to pending",
|
||||
"help_details": "Show details",
|
||||
"help_delete": "Delete",
|
||||
"version": "Version",
|
||||
"provider": "Provider",
|
||||
"host": "Host",
|
||||
"metadata": "Metadata",
|
||||
"state": "State",
|
||||
"created": "Created",
|
||||
"updated": "Updated",
|
||||
"delete_title": "Are you sure to delete? Cannot be undone.",
|
||||
"delete": "Delete",
|
||||
"cancel": "Cancel",
|
||||
"error_default_delete": "Unable to delete update. Please make sure your device has network connection.",
|
||||
"error_default_modify_state": "Unable to modify update. Please make sure your device has network connection.",
|
||||
"error_unable_delete": "Resource cannot be found. Unable to delete update. Please refresh the page.",
|
||||
"error_unable_modify_state": "Resource cannot be found. Unable to modify update. Please refresh the page.",
|
||||
"error_unauthorized_delete": "Unable to delete update. Please refresh this page.",
|
||||
"error_unauthorized_modify_state": "Unable to modify update. Please refresh this page.",
|
||||
"error_forbidden_delete": "Forbidden to delete update.",
|
||||
"error_forbidden_modify_state": "Forbidden to modify update."
|
||||
},
|
||||
"update_state_tag": {
|
||||
"state_pending": "Pending",
|
||||
"state_ignored": "Ignored",
|
||||
"state_approved": "Approved"
|
||||
},
|
||||
"updates_single": {
|
||||
"default_loading_error_message": "Unable to load update. Please make sure your device has network connection.",
|
||||
"no_update": "No update found.",
|
||||
"title_parent": "Updates",
|
||||
"title": "Update Details",
|
||||
"state": "State",
|
||||
"application": "Application",
|
||||
"version": "Version",
|
||||
"host": "Host",
|
||||
"provider": "Provider",
|
||||
"metadata": "Metadata",
|
||||
"created": "Created",
|
||||
"updated": "Updated"
|
||||
},
|
||||
"updates": {
|
||||
"title": "Updates",
|
||||
"help": "<b>Updates</b> track information about externally reported data regarding an application, host, provider and a version attribute. You can manage an <b>Update</b>'s status by transitioning it through different states like pending or ignored. On arrival of new information through <b>Webhooks</b>, an <b>Update</b> changes its version property or attached metadata attribute and creates an <b>Event</b>. In case identical information is submitted, an <b>Event</b> is still produced. When an <b>Update</b>'s state is not pending, such a modification resets the update's state to pending again. If an <b>Update</b> is set to be ignored, no information is updated.",
|
||||
"auto_refresh": "Auto Refresh",
|
||||
"on": "On",
|
||||
"off": "Off",
|
||||
"reload_tooltip": "Reload all updates",
|
||||
"reload": "Reload",
|
||||
"no_updates": "No updates found.",
|
||||
"error_default_loading": "Unable to load updates. Please make sure your device has network connection."
|
||||
},
|
||||
"updates_filters": {
|
||||
"filters": "Filters",
|
||||
"state": "State",
|
||||
"state_placeholder": "Select state(s)",
|
||||
"state_pending": "Pending",
|
||||
"state_ignored": "Ignored",
|
||||
"state_approved": "Approved",
|
||||
"order_by": "Order by",
|
||||
"order_by_id": "ID",
|
||||
"order_by_created_at": "Created",
|
||||
"order_by_updated_at": "Updated",
|
||||
"order_by_application": "Application",
|
||||
"order_by_provider": "Provider",
|
||||
"order_by_host": "Host",
|
||||
"order_asc": "Ascending",
|
||||
"order_desc": "Descending",
|
||||
"search_term": "Search",
|
||||
"search_term_placeholder": "What are you looking for?",
|
||||
"search_in": "Search in",
|
||||
"search_in_application": "Application",
|
||||
"search_in_provider": "Provider",
|
||||
"search_in_host": "Host"
|
||||
},
|
||||
"webhook": {
|
||||
"created_at": "Created on {{created}}",
|
||||
"created_at_diff": "Updated on {{updated}}, but initially submitted on {{created}}",
|
||||
"delete_title": "Are you sure to delete? Cannot be undone.",
|
||||
"delete": "Delete",
|
||||
"cancel": "Cancel",
|
||||
"url": "URL",
|
||||
"label": "Label",
|
||||
"help_delete": "Delete",
|
||||
"ignore_host": "Ignore host",
|
||||
"type": "Type",
|
||||
"type_generic": "Generic",
|
||||
"type_diun": "Diun",
|
||||
"created": "Created",
|
||||
"updated": "Updated",
|
||||
"error_default_delete": "Unable to delete webhook. Please make sure your device has network connection.",
|
||||
"error_default_update_label": "Unable to update webhook label. Please make sure your device has network connection.",
|
||||
"error_default_update_ignore_host": "Unable to update webhook ignore host. Please make sure your device has network connection.",
|
||||
"error_unable_delete": "Resource cannot be found. Unable to delete webhook. Please refresh the page.",
|
||||
"error_unable_update_label": "Resource cannot be found. Unable to update webhook label. Please refresh this page.",
|
||||
"error_unable_update_ignore_host": "Resource cannot be found. Unable to update webhook ignore host. Please refresh this page.",
|
||||
"error_forbidden_delete": "Forbidden to delete webhook.",
|
||||
"error_forbidden_update_label": "Forbidden to update label.",
|
||||
"error_forbidden_update_ignore_host": "Forbidden to update ignore host.",
|
||||
"error_unauthorized_delete": "Unable to delete webhook. Please refresh this page.",
|
||||
"error_unauthorized_update_label": "Unable to update webhook label. Please refresh this page.",
|
||||
"error_unauthorized_update_ignore_host": "Unable to update webhook ignore host. Please refresh this page."
|
||||
},
|
||||
"webhooks": {
|
||||
"title": "Webhooks",
|
||||
"help": "<b>Webhooks</b> allow to submit new or modify existing <b>Updates</b> from an external source such as a commandline tool or another application with the help of a unique URL. On submission of new information via <b>Webhook</b>, <i>upda</i> keeps track of changes. By creating multiple <b>Webhooks</b>, you can submit information from separate applications into <i>upda</i>.",
|
||||
"auto_refresh": "Auto Refresh",
|
||||
"on": "On",
|
||||
"off": "Off",
|
||||
"no_webhooks": "No webhooks yet. Create one?",
|
||||
"reload_tooltip": "Reload all webhooks",
|
||||
"error_default_loading": "Unable to load webhooks. Please make sure your device has network connection."
|
||||
},
|
||||
"webhooks_filters": {
|
||||
"order_by": "Order by",
|
||||
"order_by_id": "ID",
|
||||
"order_by_created_at": "Created",
|
||||
"order_by_updated_at": "Updated",
|
||||
"order_by_label": "Label",
|
||||
"order_by_type": "Type",
|
||||
"order_asc": "Ascending",
|
||||
"order_desc": "Descending"
|
||||
},
|
||||
"webhook_create": {
|
||||
"create": "Create new webhook",
|
||||
"label": "Label",
|
||||
"label_placeholder": "A label",
|
||||
"type": "Type",
|
||||
"type_generic": "Generic",
|
||||
"type_diun": "Diun",
|
||||
"ignore_host": "Ignore host",
|
||||
"label_required": "Label is required",
|
||||
"label_size": "Label must be at least 1 and at most 255 characters long",
|
||||
"submit": "Submit",
|
||||
"created_title": "Webhook created",
|
||||
"created_message": "Webhook is ready to use. Write down the token, you'll not see it again:<br/><br/>{{token}}",
|
||||
"error_unable": "Unable to create webhook. Please refresh this page.",
|
||||
"error_unauthorized": "Unable to create webhook. Please refresh this page.",
|
||||
"error_forbidden": "Forbidden to create webhook.",
|
||||
"error_bad_request": "Invalid input. Unable to create webhook.",
|
||||
"error_default": "Unable to create webhook. Please make sure your device has network connection."
|
||||
},
|
||||
"secrets": {
|
||||
"title": "Secrets",
|
||||
"help": "<b>Secrets</b> protect sensitive information. They can be used when managing <b>Actions</b> and are automatically injected when defined <b>Actions</b> are executed.",
|
||||
"no_secrets": "No secrets yet. Create one?",
|
||||
"reload_tooltip": "Reload all secrets",
|
||||
"error_default_loading": "Unable to load secrets. Please make sure your device has network connection.",
|
||||
"col_key": "Key",
|
||||
"col_value": "Value",
|
||||
"col_created_at": "Created",
|
||||
"col_updated_at": "Updated",
|
||||
"actions": "Actions"
|
||||
},
|
||||
"secret_create": {
|
||||
"create": "Create new secret",
|
||||
"key": "Key",
|
||||
"key_placeholder": "Unique identifier",
|
||||
"key_required": "Key is required",
|
||||
"key_size": "Key must be at least 1 and at most 255 characters long",
|
||||
"value": "Value",
|
||||
"value_placeholder": "A secret value",
|
||||
"value_required": "Value is required",
|
||||
"value_size": "Value must be at least 1 character long",
|
||||
"submit": "Submit",
|
||||
"created_title": "Secret created or updated",
|
||||
"created_message": "Secret is ready to use. Remember its value, you'll not see it again:<br/><br/>{{value}}",
|
||||
"error_unable": "Unable to create secret. Please refresh this page.",
|
||||
"error_unauthorized": "Unable to create secret. Please refresh this page.",
|
||||
"error_forbidden": "Forbidden to create secret.",
|
||||
"error_bad_request": "Invalid input. Unable to create secret.",
|
||||
"error_default": "Unable to create secret. Please make sure your device has network connection."
|
||||
},
|
||||
"secret_update_value": {
|
||||
"placeholder": "***REDACTED***",
|
||||
"error_default_update_value": "Unable to update secret value. Please make sure your device has network connection.",
|
||||
"error_unable_update_value": "Resource cannot be found. Unable to update secret value. Please refresh this page.",
|
||||
"error_forbidden_update_value": "Forbidden to update value.",
|
||||
"error_unauthorized_update_value": "Unable to update secret value. Please refresh this page."
|
||||
},
|
||||
"secret_delete": {
|
||||
"delete_title": "Are you sure to delete? Cannot be undone.",
|
||||
"delete": "Delete",
|
||||
"cancel": "Cancel",
|
||||
"help_delete": "Delete",
|
||||
"error_default_delete": "Unable to delete secret. Please make sure your device has network connection.",
|
||||
"error_unable_delete": "Resource cannot be found. Unable to delete secret. Please refresh the page.",
|
||||
"error_forbidden_delete": "Forbidden to delete secret.",
|
||||
"error_unauthorized_delete": "Unable to delete secret. Please refresh this page."
|
||||
},
|
||||
"action_invocations": {
|
||||
"title": "Action History",
|
||||
"help": "Shows enqueued (created), running and past invocations of <b>Actions</b>.",
|
||||
"auto_refresh": "Auto Refresh",
|
||||
"on": "On",
|
||||
"off": "Off",
|
||||
"no_action_invocations": "No action history yet.",
|
||||
"reload_tooltip": "Reload action history",
|
||||
"error_default_loading": "Unable to load action history. Please make sure your device has network connection.",
|
||||
"col_state": "State",
|
||||
"col_retry_count": "Attempt(s)",
|
||||
"col_created_at": "Created",
|
||||
"col_updated_at": "Updated",
|
||||
"state_success": "Success",
|
||||
"state_error": "Error",
|
||||
"state_created": "Created",
|
||||
"state_retrying": "Retrying",
|
||||
"state_running": "Running",
|
||||
"state_success_description": "This action has run successfully.",
|
||||
"state_error_description": "This action produced an error. It won't be retried again.",
|
||||
"state_created_description": "This action has been enqueued and is going to be processed in order.",
|
||||
"state_running_description": "This action is currently running.",
|
||||
"state_retrying_description": "This action failed previously, but is going to be retried until maximum attempts are exceeded."
|
||||
},
|
||||
"action_invocation_delete": {
|
||||
"delete_title": "Are you sure to delete? Cannot be undone.",
|
||||
"delete": "Delete",
|
||||
"cancel": "Cancel",
|
||||
"help_delete": "Delete",
|
||||
"error_default_delete": "Unable to delete action history item. Please make sure your device has network connection.",
|
||||
"error_unable_delete": "Resource cannot be found. Unable to delete action history item. Please refresh the page.",
|
||||
"error_forbidden_delete": "Forbidden to delete action history item.",
|
||||
"error_unauthorized_delete": "Unable to delete action history item. Please refresh this page."
|
||||
},
|
||||
"action_invocation_item": {
|
||||
"message": "Message",
|
||||
"action": "Action",
|
||||
"label": "Label",
|
||||
"type": "Type",
|
||||
"event": "Event",
|
||||
"name": "Name",
|
||||
"error_default_loading_action": "Cannot load referenced action",
|
||||
"error_default_loading_event": "Cannot load referenced event",
|
||||
"reload_tooltip": "Reload",
|
||||
"reload_text": "Try again"
|
||||
},
|
||||
"actions": {
|
||||
"title": "Actions",
|
||||
"help": "<b>Actions</b> are used to take action, e.g., call an external tool when an <b>Event</b> occurs. It can also be as simple as sending a notification to a service.",
|
||||
"auto_refresh": "Auto Refresh",
|
||||
"on": "On",
|
||||
"off": "Off",
|
||||
"no_actions": "No actions yet. Create one?",
|
||||
"reload_tooltip": "Reload all actions",
|
||||
"error_default_loading": "Unable to load actions. Please make sure your device has network connection.",
|
||||
"col_label": "Label",
|
||||
"col_enabled": "Enabled",
|
||||
"col_type": "Type",
|
||||
"col_created_at": "Created",
|
||||
"col_updated_at": "Updated"
|
||||
},
|
||||
"action_item": {
|
||||
"match_event": "Event",
|
||||
"match_application": "Application",
|
||||
"match_host": "Host",
|
||||
"match_provider": "Provider",
|
||||
"payload": "Configuration"
|
||||
},
|
||||
"action_create": {
|
||||
"all": "all",
|
||||
"create": "Create new action",
|
||||
"enabled_help": "Disabled actions won't run, even for new incoming events. This mechanism allows you can to configure and test an action before putting it live.",
|
||||
"enabled_label": "Enabled",
|
||||
"error_bad_request": "Invalid input. Unable to create action.",
|
||||
"error_default": "Unable to create action. Please make sure your device has network connection.",
|
||||
"error_forbidden": "Forbidden to create action.",
|
||||
"error_unable": "Unable to create action. Please refresh this page.",
|
||||
"error_unauthorized": "Unable to create action. Please refresh this page.",
|
||||
"label": "Label",
|
||||
"label_help": "A label for you to identify",
|
||||
"label_placeholder": "A label",
|
||||
"label_required": "Label is required",
|
||||
"label_size": "Label must be at least 1 and at most 255 characters long",
|
||||
"match_event": "Event",
|
||||
"match_event_help": "The action is triggered, when the event matches. If left blank, any event runs the action.",
|
||||
"match_application": "Application",
|
||||
"match_application_help": "The action is triggered, when the application matches. If left blank, any application runs the action.",
|
||||
"match_provider": "Provider",
|
||||
"match_provider_help": "The action is triggered, when the provider matches. If left blank, any provider runs the action.",
|
||||
"match_event": "Event",
|
||||
"match_event_help": "The action is triggered, when the event matches. If left blank, any event runs the action.",
|
||||
"match_host": "Host",
|
||||
"match_host_help": "The action is triggered, when the host matches. If left blank, any host runs the action.",
|
||||
"enabled_label": "Enabled",
|
||||
"enabled_help": "Disabled actions won't run, even for new incoming events. This mechanism allows you can to configure and test an action before putting it live.",
|
||||
"yes": "Yes",
|
||||
"match_provider": "Provider",
|
||||
"match_provider_help": "The action is triggered, when the provider matches. If left blank, any provider runs the action.",
|
||||
"no": "No",
|
||||
"submit": "Submit",
|
||||
"error_unable": "Unable to create action. Please refresh this page.",
|
||||
"error_unauthorized": "Unable to create action. Please refresh this page.",
|
||||
"error_forbidden": "Forbidden to create action.",
|
||||
"error_bad_request": "Invalid input. Unable to create action.",
|
||||
"error_default": "Unable to create action. Please make sure your device has network connection."
|
||||
"yes": "Yes"
|
||||
},
|
||||
"action_form_type": {
|
||||
"type_label": "Type",
|
||||
"type_help": "Changing the action's type also changes the required configuration",
|
||||
"shoutrrr": "shoutrrr"
|
||||
"action_delete": {
|
||||
"cancel": "Cancel",
|
||||
"delete": "Delete",
|
||||
"delete_title": "Are you sure to delete? Cannot be undone.",
|
||||
"error_default_delete": "Unable to delete action. Please make sure your device has network connection.",
|
||||
"error_forbidden_delete": "Forbidden to delete action.",
|
||||
"error_unable_delete": "Resource cannot be found. Unable to delete action. Please refresh the page.",
|
||||
"error_unauthorized_delete": "Unable to delete action. Please refresh this page.",
|
||||
"help_delete": "Delete"
|
||||
},
|
||||
"action_form_shoutrrrr": {
|
||||
"url": "URL",
|
||||
"url_help": "shoutrrr URL according to https://containrrr.dev/shoutrrr/latest/services/overview/",
|
||||
"urls_placeholder": "shoutrrr URL",
|
||||
"urls_validate_minimum": "At least one URL is required",
|
||||
"urls_validate_not_blank": "Provide an URL or delete this URL field",
|
||||
"urls_new": "New URL",
|
||||
"type_label": "Type",
|
||||
"body_label": "Body",
|
||||
"body_help": "Define the message which is being delivered. You can use the <VAR>...</VAR> and <SECRET>...</SECRET> syntax to inject dynamic content.",
|
||||
"body_label": "Body",
|
||||
"body_placeholder": "Update arrived on <VAR>HOST</VAR>.",
|
||||
"body_required": "Body is required",
|
||||
"body_size": "Body must be at least one character long"
|
||||
"body_size": "Body must be at least one character long",
|
||||
"type_label": "Type",
|
||||
"url": "URL",
|
||||
"url_help": "shoutrrr URL according to https://containrrr.dev/shoutrrr/latest/services/overview/",
|
||||
"urls_new": "New URL",
|
||||
"urls_placeholder": "shoutrrr URL",
|
||||
"urls_validate_minimum": "At least one URL is required",
|
||||
"urls_validate_not_blank": "Provide an URL or delete this URL field"
|
||||
},
|
||||
"action_update_match_event": {
|
||||
"error_default_update_value": "Unable to update match event. Please make sure your device has network connection.",
|
||||
"error_unable_update_value": "Resource cannot be found. Unable to update match event. Please refresh this page.",
|
||||
"error_forbidden_update_value": "Forbidden to update match event.",
|
||||
"error_unauthorized_update_value": "Unable to update match event. Please refresh this page."
|
||||
"action_form_type": {
|
||||
"shoutrrr": "shoutrrr",
|
||||
"type_help": "Changing the action's type also changes the required configuration",
|
||||
"type_label": "Type"
|
||||
},
|
||||
"action_invocation_delete": {
|
||||
"cancel": "Cancel",
|
||||
"delete": "Delete",
|
||||
"delete_title": "Are you sure to delete? Cannot be undone.",
|
||||
"error_default_delete": "Unable to delete action history item. Please make sure your device has network connection.",
|
||||
"error_forbidden_delete": "Forbidden to delete action history item.",
|
||||
"error_unable_delete": "Resource cannot be found. Unable to delete action history item. Please refresh the page.",
|
||||
"error_unauthorized_delete": "Unable to delete action history item. Please refresh this page.",
|
||||
"help_delete": "Delete"
|
||||
},
|
||||
"action_invocation_item": {
|
||||
"action": "Action",
|
||||
"error_default_loading_action": "Cannot load referenced action",
|
||||
"error_default_loading_event": "Cannot load referenced event",
|
||||
"event": "Event",
|
||||
"label": "Label",
|
||||
"message": "Message",
|
||||
"name": "Name",
|
||||
"reload_text": "Try again",
|
||||
"reload_tooltip": "Reload",
|
||||
"type": "Type"
|
||||
},
|
||||
"action_invocations": {
|
||||
"auto_refresh": "Auto Refresh",
|
||||
"col_created_at": "Created",
|
||||
"col_retry_count": "Attempt(s)",
|
||||
"col_state": "State",
|
||||
"col_updated_at": "Updated",
|
||||
"error_default_loading": "Unable to load action history. Please make sure your device has network connection.",
|
||||
"help": "Shows enqueued (created), running and past invocations of <b>Actions</b>.",
|
||||
"no_action_invocations": "No action history yet.",
|
||||
"off": "Off",
|
||||
"on": "On",
|
||||
"reload_tooltip": "Reload action history",
|
||||
"state_created": "Created",
|
||||
"state_created_description": "This action has been enqueued and is going to be processed in order.",
|
||||
"state_error": "Error",
|
||||
"state_error_description": "This action produced an error. It won't be retried again.",
|
||||
"state_retrying": "Retrying",
|
||||
"state_retrying_description": "This action failed previously, but is going to be retried until maximum attempts are exceeded.",
|
||||
"state_running": "Running",
|
||||
"state_running_description": "This action is currently running.",
|
||||
"state_success": "Success",
|
||||
"state_success_description": "This action has run successfully.",
|
||||
"title": "Action History"
|
||||
},
|
||||
"action_item": {
|
||||
"match_application": "Application",
|
||||
"match_event": "Event",
|
||||
"match_host": "Host",
|
||||
"match_provider": "Provider",
|
||||
"payload": "Configuration"
|
||||
},
|
||||
"action_select_event": {
|
||||
"all": "all",
|
||||
"update_created": "Update created",
|
||||
"update_deleted": "Update deleted",
|
||||
"update_updated": "Update changed",
|
||||
"update_updated_state": "Update's state changed",
|
||||
"update_updated_version": "Update's version changed",
|
||||
"update_deleted": "Update deleted"
|
||||
"update_updated_version": "Update's version changed"
|
||||
},
|
||||
"action_update_label": {
|
||||
"error_default_update_value": "Unable to update label. Please make sure your device has network connection.",
|
||||
"error_unable_update_value": "Resource cannot be found. Unable to update label. Please refresh this page.",
|
||||
"error_forbidden_update_value": "Forbidden to update label.",
|
||||
"error_unauthorized_update_value": "Unable to update label. Please refresh this page."
|
||||
"action_test": {
|
||||
"application": "Test Application",
|
||||
"error_bad_request": "Invalid input. Unable to test action.",
|
||||
"error_default": "Unable to test action. Please make sure your device has network connection.",
|
||||
"error_forbidden": "Forbidden to test action.",
|
||||
"error_unable": "Unable to test action. Please refresh this page.",
|
||||
"error_unauthorized": "Unable to test action. Please refresh this page.",
|
||||
"host": "Test Host",
|
||||
"provider": "Test Provider",
|
||||
"state": "Test State",
|
||||
"test": "Test",
|
||||
"tested_message_error": "Action failed to run. Reason: {{reason}}",
|
||||
"tested_message_success": "Action ran successfully.",
|
||||
"tested_title_error": "Error",
|
||||
"tested_title_success": "Success",
|
||||
"version": "Test Version"
|
||||
},
|
||||
"action_text_type": {
|
||||
"shoutrrr": "shoutrrr"
|
||||
},
|
||||
"action_update_enabled": {
|
||||
"error_default_update_value": "Unable to update enabled flag. Please make sure your device has network connection.",
|
||||
"error_unable_update_value": "Resource cannot be found. Unable to update enabled flag. Please refresh this page.",
|
||||
"error_forbidden_update_value": "Forbidden to update enabled flag.",
|
||||
"error_unable_update_value": "Resource cannot be found. Unable to update enabled flag. Please refresh this page.",
|
||||
"error_unauthorized_update_value": "Unable to update enabled flag. Please refresh this page."
|
||||
},
|
||||
"action_update_label": {
|
||||
"error_default_update_value": "Unable to update label. Please make sure your device has network connection.",
|
||||
"error_forbidden_update_value": "Forbidden to update label.",
|
||||
"error_unable_update_value": "Resource cannot be found. Unable to update label. Please refresh this page.",
|
||||
"error_unauthorized_update_value": "Unable to update label. Please refresh this page."
|
||||
},
|
||||
"action_update_match_application": {
|
||||
"all": "all match",
|
||||
"error_default_update_value": "Unable to update match application. Please make sure your device has network connection.",
|
||||
"error_unable_update_value": "Resource cannot be found. Unable to update match application. Please refresh this page.",
|
||||
"error_forbidden_update_value": "Forbidden to update match application.",
|
||||
"error_unable_update_value": "Resource cannot be found. Unable to update match application. Please refresh this page.",
|
||||
"error_unauthorized_update_value": "Unable to update match application. Please refresh this page."
|
||||
},
|
||||
"action_update_match_event": {
|
||||
"error_default_update_value": "Unable to update match event. Please make sure your device has network connection.",
|
||||
"error_forbidden_update_value": "Forbidden to update match event.",
|
||||
"error_unable_update_value": "Resource cannot be found. Unable to update match event. Please refresh this page.",
|
||||
"error_unauthorized_update_value": "Unable to update match event. Please refresh this page."
|
||||
},
|
||||
"action_update_match_host": {
|
||||
"all": "all match",
|
||||
"error_default_update_value": "Unable to update match host. Please make sure your device has network connection.",
|
||||
"error_unable_update_value": "Resource cannot be found. Unable to update match host. Please refresh this page.",
|
||||
"error_forbidden_update_value": "Forbidden to update match host.",
|
||||
"error_unable_update_value": "Resource cannot be found. Unable to update match host. Please refresh this page.",
|
||||
"error_unauthorized_update_value": "Unable to update match host. Please refresh this page."
|
||||
},
|
||||
"action_update_match_provider": {
|
||||
"all": "all match",
|
||||
"error_default_update_value": "Unable to update match provider. Please make sure your device has network connection.",
|
||||
"error_unable_update_value": "Resource cannot be found. Unable to update match provider. Please refresh this page.",
|
||||
"error_forbidden_update_value": "Forbidden to update match provider.",
|
||||
"error_unable_update_value": "Resource cannot be found. Unable to update match provider. Please refresh this page.",
|
||||
"error_unauthorized_update_value": "Unable to update match provider. Please refresh this page."
|
||||
},
|
||||
"action_update_payload": {
|
||||
"update_type_and_payload": "Advanced configuration",
|
||||
"submit": "Save",
|
||||
"error_default_update_value": "Unable to update advanced configuration. Please make sure your device has network connection.",
|
||||
"error_unable_update_value": "Resource cannot be found. Unable to update advanced configuration. Please refresh this page.",
|
||||
"error_forbidden_update_value": "Forbidden to update value.",
|
||||
"error_unauthorized_update_value": "Unable to update advanced configuration. Please refresh this page."
|
||||
"error_unable_update_value": "Resource cannot be found. Unable to update advanced configuration. Please refresh this page.",
|
||||
"error_unauthorized_update_value": "Unable to update advanced configuration. Please refresh this page.",
|
||||
"submit": "Save",
|
||||
"update_type_and_payload": "Advanced configuration"
|
||||
},
|
||||
"action_delete": {
|
||||
"delete_title": "Are you sure to delete? Cannot be undone.",
|
||||
"delete": "Delete",
|
||||
"cancel": "Cancel",
|
||||
"help_delete": "Delete",
|
||||
"error_default_delete": "Unable to delete action. Please make sure your device has network connection.",
|
||||
"error_unable_delete": "Resource cannot be found. Unable to delete action. Please refresh the page.",
|
||||
"error_forbidden_delete": "Forbidden to delete action.",
|
||||
"error_unauthorized_delete": "Unable to delete action. Please refresh this page."
|
||||
},
|
||||
"action_test": {
|
||||
"test": "Test",
|
||||
"application": "Test Application",
|
||||
"host": "Test Host",
|
||||
"provider": "Test Provider",
|
||||
"version": "Test Version",
|
||||
"state": "Test State",
|
||||
"tested_title_success": "Success",
|
||||
"tested_message_success": "Action ran successfully.",
|
||||
"tested_title_error": "Error",
|
||||
"tested_message_error": "Action failed to run. Reason: {{reason}}",
|
||||
"error_unable": "Unable to test action. Please refresh this page.",
|
||||
"error_unauthorized": "Unable to test action. Please refresh this page.",
|
||||
"error_forbidden": "Forbidden to test action.",
|
||||
"error_bad_request": "Invalid input. Unable to test action.",
|
||||
"error_default": "Unable to test action. Please make sure your device has network connection."
|
||||
},
|
||||
"action_text_type": {
|
||||
"shoutrrr": "shoutrrr"
|
||||
},
|
||||
"events": {
|
||||
"title": "Events",
|
||||
"help": "Events represent the chronological order of what is going on in the system. You can see when and how an <b>Update</b> has changed.",
|
||||
"actions": {
|
||||
"auto_refresh": "Auto Refresh",
|
||||
"on": "On",
|
||||
"col_created_at": "Created",
|
||||
"col_enabled": "Enabled",
|
||||
"col_label": "Label",
|
||||
"col_type": "Type",
|
||||
"col_updated_at": "Updated",
|
||||
"error_default_loading": "Unable to load actions. Please make sure your device has network connection.",
|
||||
"help": "<b>Actions</b> are used to take action, e.g., call an external tool when an <b>Event</b> occurs. It can also be as simple as sending a notification to a service.",
|
||||
"no_actions": "No actions yet. Create one?",
|
||||
"off": "Off",
|
||||
"reload": "Reload",
|
||||
"reload_tooltip": "Reload all updates",
|
||||
"load_more": "Load more",
|
||||
"no_events": "No events yet.",
|
||||
"error_default_loading": "Unable to load events. Please make sure your device has network connection."
|
||||
"on": "On",
|
||||
"reload_tooltip": "Reload all actions",
|
||||
"title": "Actions"
|
||||
},
|
||||
"auth": {
|
||||
"loading": "Loading..."
|
||||
},
|
||||
"common": {
|
||||
"404": "The page you've requested doesn't exist.",
|
||||
"404_title": "Not found.",
|
||||
"action_invocations": "Action History",
|
||||
"actions": "Actions",
|
||||
"back_home": "Go back",
|
||||
"events": "Events",
|
||||
"home": "Home",
|
||||
"login": "Login",
|
||||
"logout": "Logout",
|
||||
"secrets": "Secrets",
|
||||
"updates": "Updates",
|
||||
"webhooks": "Webhooks"
|
||||
},
|
||||
"event": {
|
||||
"name": "Name",
|
||||
"help_delete": "Delete",
|
||||
"delete_title": "Are you sure to delete? Cannot be undone.",
|
||||
"delete": "Delete",
|
||||
"cancel": "Cancel",
|
||||
"delete": "Delete",
|
||||
"delete_title": "Are you sure to delete? Cannot be undone.",
|
||||
"error_default_delete": "Unable to delete event. Please make sure your device has network connection.",
|
||||
"error_unable_delete": "Resource cannot be found. Unable to delete event. Please refresh the page.",
|
||||
"error_forbidden_delete": "Forbidden to delete event.",
|
||||
"error_unauthorized_delete": "Unable to delete event. Please refresh this page."
|
||||
"error_unable_delete": "Resource cannot be found. Unable to delete event. Please refresh the page.",
|
||||
"error_unauthorized_delete": "Unable to delete event. Please refresh this page.",
|
||||
"help_delete": "Delete",
|
||||
"name": "Name"
|
||||
},
|
||||
"event_text": {
|
||||
"update_created": "Update of application <b>{{application}}</b> on host <b>{{host}}</b> for provider <b>{{provider}}</b> with version <b>{{version}}</b> has been created.",
|
||||
"update_deleted": "Update of application <b>{{application}}</b> on host <b>{{host}}</b> for provider <b>{{provider}}</b> with version <b>{{version}}</b> has been deleted.",
|
||||
"update_updated": "Update of application <b>{{application}}</b> on host <b>{{host}}</b> for provider <b>{{provider}}</b> has been changed (version or metadata). Version: <b>{{version}}</b> (was <b>{{versionPrior}}</b>).",
|
||||
"update_updated_state": "Update of application <b>{{application}}</b> on host <b>{{host}}</b> for provider <b>{{provider}}</b> changed its state to <b>{{state}}</b> (was <b>{{statePrior}}</b>).",
|
||||
"update_updated_version": "Update of application <b>{{application}}</b> on host <b>{{host}}</b> for provider <b>{{provider}}</b> has been changed its version to <b>{{version}}</b> (was <b>{{versionPrior}}</b>).",
|
||||
"update_deleted": "Update of application <b>{{application}}</b> on host <b>{{host}}</b> for provider <b>{{provider}}</b> with version <b>{{version}}</b> has been deleted."
|
||||
"update_updated_version": "Update of application <b>{{application}}</b> on host <b>{{host}}</b> for provider <b>{{provider}}</b> has been changed its version to <b>{{version}}</b> (was <b>{{versionPrior}}</b>)."
|
||||
},
|
||||
"events": {
|
||||
"auto_refresh": "Auto Refresh",
|
||||
"error_default_loading": "Unable to load events. Please make sure your device has network connection.",
|
||||
"help": "Events represent the chronological order of what is going on in the system. You can see when and how an <b>Update</b> has changed.",
|
||||
"load_more": "Load more",
|
||||
"no_events": "No events yet.",
|
||||
"off": "Off",
|
||||
"on": "On",
|
||||
"reload": "Reload",
|
||||
"reload_tooltip": "Reload all updates",
|
||||
"title": "Events"
|
||||
},
|
||||
"health": {
|
||||
"generic_error_content": "Health check failed, please try again later.",
|
||||
"generic_error_title": "Services unhealthy",
|
||||
"reload": "Reload"
|
||||
},
|
||||
"login": {
|
||||
"default_message": "Error while logging in.",
|
||||
"password": "Password",
|
||||
"password_required": "Password is required",
|
||||
"reset": "Reset",
|
||||
"submit": "Submit",
|
||||
"title": "Login",
|
||||
"unauthorized": "Username or password are incorrect.",
|
||||
"username": "Username",
|
||||
"username_required": "Username is required"
|
||||
},
|
||||
"secret_create": {
|
||||
"create": "Create new secret",
|
||||
"created_message": "Secret is ready to use. Remember its value, you'll not see it again:<br/><br/>{{value}}",
|
||||
"created_title": "Secret created or updated",
|
||||
"error_bad_request": "Invalid input. Unable to create secret.",
|
||||
"error_default": "Unable to create secret. Please make sure your device has network connection.",
|
||||
"error_forbidden": "Forbidden to create secret.",
|
||||
"error_unable": "Unable to create secret. Please refresh this page.",
|
||||
"error_unauthorized": "Unable to create secret. Please refresh this page.",
|
||||
"key": "Key",
|
||||
"key_placeholder": "Unique identifier",
|
||||
"key_required": "Key is required",
|
||||
"key_size": "Key must be at least 1 and at most 255 characters long",
|
||||
"submit": "Submit",
|
||||
"value": "Value",
|
||||
"value_placeholder": "A secret value",
|
||||
"value_required": "Value is required",
|
||||
"value_size": "Value must be at least 1 character long"
|
||||
},
|
||||
"secret_delete": {
|
||||
"cancel": "Cancel",
|
||||
"delete": "Delete",
|
||||
"delete_title": "Are you sure to delete? Cannot be undone.",
|
||||
"error_default_delete": "Unable to delete secret. Please make sure your device has network connection.",
|
||||
"error_forbidden_delete": "Forbidden to delete secret.",
|
||||
"error_unable_delete": "Resource cannot be found. Unable to delete secret. Please refresh the page.",
|
||||
"error_unauthorized_delete": "Unable to delete secret. Please refresh this page.",
|
||||
"help_delete": "Delete"
|
||||
},
|
||||
"secret_update_value": {
|
||||
"error_default_update_value": "Unable to update secret value. Please make sure your device has network connection.",
|
||||
"error_forbidden_update_value": "Forbidden to update value.",
|
||||
"error_unable_update_value": "Resource cannot be found. Unable to update secret value. Please refresh this page.",
|
||||
"error_unauthorized_update_value": "Unable to update secret value. Please refresh this page.",
|
||||
"placeholder": "***REDACTED***"
|
||||
},
|
||||
"secrets": {
|
||||
"actions": "Actions",
|
||||
"col_created_at": "Created",
|
||||
"col_key": "Key",
|
||||
"col_updated_at": "Updated",
|
||||
"col_value": "Value",
|
||||
"error_default_loading": "Unable to load secrets. Please make sure your device has network connection.",
|
||||
"help": "<b>Secrets</b> protect sensitive information. They can be used when managing <b>Actions</b> and are automatically injected when defined <b>Actions</b> are executed.",
|
||||
"no_secrets": "No secrets yet. Create one?",
|
||||
"reload_tooltip": "Reload all secrets",
|
||||
"title": "Secrets"
|
||||
},
|
||||
"update": {
|
||||
"cancel": "Cancel",
|
||||
"created": "Created",
|
||||
"created_at": "Created on {{created}}",
|
||||
"created_at_diff": "Updated on {{updated}}, but initially submitted on {{created}}",
|
||||
"delete": "Delete",
|
||||
"delete_title": "Are you sure to delete? Cannot be undone.",
|
||||
"error_default_delete": "Unable to delete update. Please make sure your device has network connection.",
|
||||
"error_default_modify_state": "Unable to modify update. Please make sure your device has network connection.",
|
||||
"error_forbidden_delete": "Forbidden to delete update.",
|
||||
"error_forbidden_modify_state": "Forbidden to modify update.",
|
||||
"error_unable_delete": "Resource cannot be found. Unable to delete update. Please refresh the page.",
|
||||
"error_unable_modify_state": "Resource cannot be found. Unable to modify update. Please refresh the page.",
|
||||
"error_unauthorized_delete": "Unable to delete update. Please refresh this page.",
|
||||
"error_unauthorized_modify_state": "Unable to modify update. Please refresh this page.",
|
||||
"handle_pending": "Recently updated",
|
||||
"help_approve": "Approve",
|
||||
"help_delete": "Delete",
|
||||
"help_details": "Show details",
|
||||
"help_ignore": "Ignore",
|
||||
"help_pending": "Reset to pending",
|
||||
"host": "Host",
|
||||
"metadata": "Metadata",
|
||||
"provider": "Provider",
|
||||
"state": "State",
|
||||
"updated": "Updated",
|
||||
"version": "Version"
|
||||
},
|
||||
"update_state_tag": {
|
||||
"state_approved": "Approved",
|
||||
"state_ignored": "Ignored",
|
||||
"state_pending": "Pending"
|
||||
},
|
||||
"updates": {
|
||||
"auto_refresh": "Auto Refresh",
|
||||
"error_default_loading": "Unable to load updates. Please make sure your device has network connection.",
|
||||
"help": "<b>Updates</b> track information about externally reported data regarding an application, host, provider and a version attribute. You can manage an <b>Update</b>'s status by transitioning it through different states like pending or ignored. On arrival of new information through <b>Webhooks</b>, an <b>Update</b> changes its version property or attached metadata attribute and creates an <b>Event</b>. In case identical information is submitted, an <b>Event</b> is still produced. When an <b>Update</b>'s state is not pending, such a modification resets the update's state to pending again. If an <b>Update</b> is set to be ignored, no information is updated.",
|
||||
"no_updates": "No updates found.",
|
||||
"off": "Off",
|
||||
"on": "On",
|
||||
"reload": "Reload",
|
||||
"reload_tooltip": "Reload all updates",
|
||||
"title": "Updates"
|
||||
},
|
||||
"updates_filters": {
|
||||
"filters": "Filters",
|
||||
"order_asc": "Ascending",
|
||||
"order_by": "Order by",
|
||||
"order_by_application": "Application",
|
||||
"order_by_created_at": "Created",
|
||||
"order_by_host": "Host",
|
||||
"order_by_id": "ID",
|
||||
"order_by_provider": "Provider",
|
||||
"order_by_updated_at": "Updated",
|
||||
"order_desc": "Descending",
|
||||
"search_in": "Search in",
|
||||
"search_in_application": "Application",
|
||||
"search_in_host": "Host",
|
||||
"search_in_provider": "Provider",
|
||||
"search_term": "Search",
|
||||
"search_term_placeholder": "What are you looking for?",
|
||||
"state": "State",
|
||||
"state_approved": "Approved",
|
||||
"state_ignored": "Ignored",
|
||||
"state_pending": "Pending",
|
||||
"state_placeholder": "Select state(s)"
|
||||
},
|
||||
"updates_single": {
|
||||
"application": "Application",
|
||||
"created": "Created",
|
||||
"default_loading_error_message": "Unable to load update. Please make sure your device has network connection.",
|
||||
"host": "Host",
|
||||
"metadata": "Metadata",
|
||||
"no_update": "No update found.",
|
||||
"provider": "Provider",
|
||||
"state": "State",
|
||||
"title": "Update Details",
|
||||
"title_parent": "Updates",
|
||||
"updated": "Updated",
|
||||
"version": "Version"
|
||||
},
|
||||
"version": {
|
||||
"number": "4.0.1",
|
||||
"version": "Version"
|
||||
},
|
||||
"webhook": {
|
||||
"cancel": "Cancel",
|
||||
"created": "Created",
|
||||
"created_at": "Created on {{created}}",
|
||||
"created_at_diff": "Updated on {{updated}}, but initially submitted on {{created}}",
|
||||
"delete": "Delete",
|
||||
"delete_title": "Are you sure to delete? Cannot be undone.",
|
||||
"error_default_delete": "Unable to delete webhook. Please make sure your device has network connection.",
|
||||
"error_default_update_ignore_host": "Unable to update webhook ignore host. Please make sure your device has network connection.",
|
||||
"error_default_update_label": "Unable to update webhook label. Please make sure your device has network connection.",
|
||||
"error_forbidden_delete": "Forbidden to delete webhook.",
|
||||
"error_forbidden_update_ignore_host": "Forbidden to update ignore host.",
|
||||
"error_forbidden_update_label": "Forbidden to update label.",
|
||||
"error_unable_delete": "Resource cannot be found. Unable to delete webhook. Please refresh the page.",
|
||||
"error_unable_update_ignore_host": "Resource cannot be found. Unable to update webhook ignore host. Please refresh this page.",
|
||||
"error_unable_update_label": "Resource cannot be found. Unable to update webhook label. Please refresh this page.",
|
||||
"error_unauthorized_delete": "Unable to delete webhook. Please refresh this page.",
|
||||
"error_unauthorized_update_ignore_host": "Unable to update webhook ignore host. Please refresh this page.",
|
||||
"error_unauthorized_update_label": "Unable to update webhook label. Please refresh this page.",
|
||||
"help_delete": "Delete",
|
||||
"ignore_host": "Ignore host",
|
||||
"label": "Label",
|
||||
"type": "Type",
|
||||
"type_diun": "Diun",
|
||||
"type_generic": "Generic",
|
||||
"updated": "Updated",
|
||||
"url": "URL"
|
||||
},
|
||||
"webhook_create": {
|
||||
"create": "Create new webhook",
|
||||
"created_message": "Webhook is ready to use. Write down the token, you'll not see it again:<br/><br/>{{token}}",
|
||||
"created_title": "Webhook created",
|
||||
"error_bad_request": "Invalid input. Unable to create webhook.",
|
||||
"error_default": "Unable to create webhook. Please make sure your device has network connection.",
|
||||
"error_forbidden": "Forbidden to create webhook.",
|
||||
"error_unable": "Unable to create webhook. Please refresh this page.",
|
||||
"error_unauthorized": "Unable to create webhook. Please refresh this page.",
|
||||
"ignore_host": "Ignore host",
|
||||
"label": "Label",
|
||||
"label_placeholder": "A label",
|
||||
"label_required": "Label is required",
|
||||
"label_size": "Label must be at least 1 and at most 255 characters long",
|
||||
"submit": "Submit",
|
||||
"type": "Type",
|
||||
"type_diun": "Diun",
|
||||
"type_generic": "Generic"
|
||||
},
|
||||
"webhooks": {
|
||||
"auto_refresh": "Auto Refresh",
|
||||
"error_default_loading": "Unable to load webhooks. Please make sure your device has network connection.",
|
||||
"help": "<b>Webhooks</b> allow to submit new or modify existing <b>Updates</b> from an external source such as a commandline tool or another application with the help of a unique URL. On submission of new information via <b>Webhook</b>, <i>upda</i> keeps track of changes. By creating multiple <b>Webhooks</b>, you can submit information from separate applications into <i>upda</i>.",
|
||||
"no_webhooks": "No webhooks yet. Create one?",
|
||||
"off": "Off",
|
||||
"on": "On",
|
||||
"reload_tooltip": "Reload all webhooks",
|
||||
"title": "Webhooks"
|
||||
},
|
||||
"webhooks_filters": {
|
||||
"order_asc": "Ascending",
|
||||
"order_by": "Order by",
|
||||
"order_by_created_at": "Created",
|
||||
"order_by_id": "ID",
|
||||
"order_by_label": "Label",
|
||||
"order_by_type": "Type",
|
||||
"order_by_updated_at": "Updated",
|
||||
"order_desc": "Descending"
|
||||
}
|
||||
}
|
|
@ -3,7 +3,7 @@ import App from './App';
|
|||
import store from './store';
|
||||
import ReactDOM from 'react-dom/client';
|
||||
import { Provider } from 'react-redux';
|
||||
import { HashRouter as Router } from 'react-router-dom';
|
||||
import { HashRouter as Router } from 'react-router';
|
||||
import './style/app-theme.less';
|
||||
|
||||
const root = ReactDOM.createRoot(document.getElementById('root') as HTMLElement);
|
||||
|
|
|
@ -3,7 +3,7 @@ import HealthHandler from './HealthHandler';
|
|||
import Menu from './Menu';
|
||||
import { Layout } from 'antd';
|
||||
import { FC } from 'react';
|
||||
import { Outlet } from 'react-router-dom';
|
||||
import { Outlet } from 'react-router';
|
||||
|
||||
const AppLayout: FC = () => {
|
||||
return (
|
||||
|
|
|
@ -18,7 +18,7 @@ import { Menu, Typography } from 'antd';
|
|||
import { TFunction } from 'i18next';
|
||||
import { forEach } from 'lodash';
|
||||
import { FC, useMemo } from 'react';
|
||||
import { useNavigate } from 'react-router-dom';
|
||||
import { useNavigate } from 'react-router';
|
||||
|
||||
export type PrimaryMenuProps = {
|
||||
t: TFunction;
|
||||
|
|
|
@ -24,7 +24,7 @@ import { FilterValue, SorterResult } from 'antd/es/table/interface';
|
|||
import parse from 'html-react-parser';
|
||||
import { useCallback, useEffect, useMemo, useState } from 'react';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { useSearchParams } from 'react-router-dom';
|
||||
import { useSearchParams } from 'react-router';
|
||||
|
||||
const DEFAULT_POLLING_INTERVAL = 5000;
|
||||
|
||||
|
|
|
@ -21,7 +21,7 @@ import { FilterValue, SorterResult } from 'antd/es/table/interface';
|
|||
import parse from 'html-react-parser';
|
||||
import { useCallback, useEffect, useMemo, useState } from 'react';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { useSearchParams } from 'react-router-dom';
|
||||
import { useSearchParams } from 'react-router';
|
||||
|
||||
const DEFAULT_POLLING_INTERVAL = 5000;
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@ import { HomeOutlined } from '@ant-design/icons';
|
|||
import { Breadcrumb, Typography } from 'antd';
|
||||
import { forEach } from 'lodash';
|
||||
import { FC } from 'react';
|
||||
import { Link } from 'react-router-dom';
|
||||
import { Link } from 'react-router';
|
||||
|
||||
export interface AppBreadcrumbProps {
|
||||
items: { label: string; path: string; active?: boolean }[];
|
||||
|
|
|
@ -2,7 +2,7 @@ import AppPaths from '../../constants/appPaths';
|
|||
import { getPageFullPath } from '../../utils/urlHelper';
|
||||
import { Button, Result } from 'antd';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { useNavigate } from 'react-router-dom';
|
||||
import { useNavigate } from 'react-router';
|
||||
|
||||
const ErrorPage404 = () => {
|
||||
const [t] = useTranslation('common');
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import AppPaths from '../../constants/appPaths';
|
||||
import { getPageFullPath } from '../../utils/urlHelper';
|
||||
import { Navigate } from 'react-router-dom';
|
||||
import { Navigate } from 'react-router';
|
||||
|
||||
const Home = () => {
|
||||
return <Navigate to={getPageFullPath(AppPaths.UPDATES)} replace={true} />;
|
||||
|
|
|
@ -9,7 +9,7 @@ import AppBreadcrumb from '../common/AppBreadcrumb';
|
|||
import { Button, Card, Flex, Form, Input, Space } from 'antd';
|
||||
import { useCallback, useEffect } from 'react';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { useNavigate } from 'react-router-dom';
|
||||
import { useNavigate } from 'react-router';
|
||||
|
||||
const Login = () => {
|
||||
const [t] = useTranslation('login');
|
||||
|
|
|
@ -18,7 +18,7 @@ import {
|
|||
import { Badge, Button, Card, Col, Popconfirm, Row, Space, Tooltip, Typography } from 'antd';
|
||||
import { FC, useCallback, useEffect } from 'react';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { useNavigate } from 'react-router-dom';
|
||||
import { useNavigate } from 'react-router';
|
||||
|
||||
const { Text } = Typography;
|
||||
|
||||
|
|
|
@ -9,7 +9,7 @@ import { Badge, Button, Collapse, Divider, Form, Input, Select } from 'antd';
|
|||
import { compact, forEach, uniq } from 'lodash';
|
||||
import { FC, useCallback, useEffect, useState } from 'react';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { useSearchParams } from 'react-router-dom';
|
||||
import { useSearchParams } from 'react-router';
|
||||
|
||||
const COLLAPSE_KEY = 'filter';
|
||||
|
||||
|
|
|
@ -11,7 +11,7 @@ import { PageHeader } from '@ant-design/pro-layout';
|
|||
import { Descriptions, Result, Skeleton, Typography } from 'antd';
|
||||
import { FC } from 'react';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { useParams } from 'react-router-dom';
|
||||
import { useParams } from 'react-router';
|
||||
|
||||
const { Text } = Typography;
|
||||
|
||||
|
|
|
@ -13,7 +13,7 @@ import { Button, Col, List, Result, Row, Skeleton, Space, Switch, Tooltip, Typog
|
|||
import parse from 'html-react-parser';
|
||||
import { FC, useCallback, useEffect, useState } from 'react';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { useSearchParams } from 'react-router-dom';
|
||||
import { useSearchParams } from 'react-router';
|
||||
|
||||
const DEFAULT_POLLING_INTERVAL = 10000;
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@ import useWebhooksFilterQueryParams from '../../use/useWebhooksFilterQueryParams
|
|||
import { Form, Select } from 'antd';
|
||||
import { FC, useCallback } from 'react';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { useSearchParams } from 'react-router-dom';
|
||||
import { useSearchParams } from 'react-router';
|
||||
|
||||
const WebhookPageFilter: FC = () => {
|
||||
const [t] = useTranslation('webhooks_filters');
|
||||
|
|
|
@ -14,7 +14,7 @@ import { Button, Col, List, Result, Row, Skeleton, Space, Switch, Tooltip, Typog
|
|||
import parse from 'html-react-parser';
|
||||
import { FC, useCallback, useEffect, useState } from 'react';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { useSearchParams } from 'react-router-dom';
|
||||
import { useSearchParams } from 'react-router';
|
||||
|
||||
const DEFAULT_POLLING_INTERVAL = 10000;
|
||||
|
||||
|
|
|
@ -14,7 +14,7 @@ import UpdatesPage from '../pages/updates/UpdatesPage';
|
|||
import WebhooksPage from '../pages/webhooks/WebhooksPage';
|
||||
import { getAppBasePath } from '../utils/urlHelper';
|
||||
import React from 'react';
|
||||
import { Route, Routes } from 'react-router-dom';
|
||||
import { Route, Routes } from 'react-router';
|
||||
|
||||
const AppRouter = () => {
|
||||
return (
|
||||
|
|
|
@ -2,7 +2,7 @@ import AppPaths from '../constants/appPaths';
|
|||
import { useAuthenticatedSelector } from '../selectors/authSelectors';
|
||||
import { getPageFullPath } from '../utils/urlHelper';
|
||||
import { FC, ReactNode } from 'react';
|
||||
import { Navigate } from 'react-router-dom';
|
||||
import { Navigate } from 'react-router';
|
||||
|
||||
export const RequireAuth: FC<{ children: ReactNode | ReactNode[] }> = ({ children }): JSX.Element => {
|
||||
const isAuthenticated = useAuthenticatedSelector();
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import ActionInvocationFilterQueryParamNames from '../constants/api/actionInvocationFilterQueryParamNames';
|
||||
import { PAGE_DEFAULT, PAGE_SIZE_DEFAULT } from '../constants/pagination';
|
||||
import { useCallback } from 'react';
|
||||
import { useSearchParams } from 'react-router-dom';
|
||||
import { useSearchParams } from 'react-router';
|
||||
|
||||
const useActionInvocationsFilterQueryParams = () => {
|
||||
const [queryParams] = useSearchParams();
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import ActionFilterQueryParamNames from '../constants/api/actionFilterQueryParamNames';
|
||||
import { PAGE_DEFAULT, PAGE_SIZE_DEFAULT } from '../constants/pagination';
|
||||
import { useCallback } from 'react';
|
||||
import { useSearchParams } from 'react-router-dom';
|
||||
import { useSearchParams } from 'react-router';
|
||||
|
||||
const useActionsFilterQueryParams = () => {
|
||||
const [queryParams] = useSearchParams();
|
||||
|
|
|
@ -4,7 +4,7 @@ import { updateAuth } from '../slices/authSlice';
|
|||
import { useAppDispatch } from '../store';
|
||||
import { getPageFullPath } from '../utils/urlHelper';
|
||||
import { useCallback } from 'react';
|
||||
import { useNavigate } from 'react-router-dom';
|
||||
import { useNavigate } from 'react-router';
|
||||
|
||||
export interface AuthHook {
|
||||
logout: () => void;
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import EventFilterQueryParamNames from '../constants/api/eventFilterQueryParamNames';
|
||||
import { SIZE_DEFAULT, SKIP_DEFAULT } from '../constants/pagination';
|
||||
import { useCallback } from 'react';
|
||||
import { useSearchParams } from 'react-router-dom';
|
||||
import { useSearchParams } from 'react-router';
|
||||
|
||||
const useEventsFilterQueryParams = () => {
|
||||
const [queryParams] = useSearchParams();
|
||||
|
|
|
@ -2,7 +2,7 @@ import UpdateFilterQueryParamNames from '../constants/api/updateFilterQueryParam
|
|||
import { PAGE_DEFAULT, PAGE_SIZE_DEFAULT } from '../constants/pagination';
|
||||
import { compact, isEmpty, parseInt, uniq } from 'lodash';
|
||||
import { useCallback } from 'react';
|
||||
import { useSearchParams } from 'react-router-dom';
|
||||
import { useSearchParams } from 'react-router';
|
||||
|
||||
export interface UseUpdatesFilterQueryParams {
|
||||
searchTerm: string | undefined | number;
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import WebhookFilterQueryParamNames from '../constants/api/webhookFilterQueryParamNames';
|
||||
import { PAGE_DEFAULT, PAGE_SIZE_DEFAULT } from '../constants/pagination';
|
||||
import { useCallback } from 'react';
|
||||
import { useSearchParams } from 'react-router-dom';
|
||||
import { useSearchParams } from 'react-router';
|
||||
|
||||
const useWebhooksFilterQueryParams = () => {
|
||||
const [queryParams] = useSearchParams();
|
||||
|
|
Loading…
Reference in a new issue