mirror of
https://github.com/LemmyNet/lemmy-ui.git
synced 2024-11-22 04:11:12 +00:00
Registration application view (#2651)
* Fix tribute * Group modals into common directory * Make display modal * Make registration applications viewable * Remove potential crash * Add translations
This commit is contained in:
parent
8d5e7de18e
commit
0651b216d2
18 changed files with 246 additions and 99 deletions
|
@ -1 +1 @@
|
||||||
Subproject commit aa39a764aec120d781325dc8b55732aafffe0ac7
|
Subproject commit 493d5dc2a4e7a1671f06f789613410315792babc
|
|
@ -60,7 +60,7 @@
|
||||||
"inferno-router": "^8.2.3",
|
"inferno-router": "^8.2.3",
|
||||||
"inferno-server": "^8.2.3",
|
"inferno-server": "^8.2.3",
|
||||||
"jwt-decode": "^4.0.0",
|
"jwt-decode": "^4.0.0",
|
||||||
"lemmy-js-client": "0.19.4",
|
"lemmy-js-client": "0.19.6-beta.1",
|
||||||
"lodash.isequal": "^4.5.0",
|
"lodash.isequal": "^4.5.0",
|
||||||
"markdown-it": "^14.1.0",
|
"markdown-it": "^14.1.0",
|
||||||
"markdown-it-bidi": "^0.1.0",
|
"markdown-it-bidi": "^0.1.0",
|
||||||
|
@ -102,7 +102,7 @@
|
||||||
"@types/lodash.isequal": "^4.5.8",
|
"@types/lodash.isequal": "^4.5.8",
|
||||||
"@types/markdown-it": "^14.1.2",
|
"@types/markdown-it": "^14.1.2",
|
||||||
"@types/markdown-it-container": "^2.0.10",
|
"@types/markdown-it-container": "^2.0.10",
|
||||||
"@types/node": "^22.0.2",
|
"@types/node": "^22.1.0",
|
||||||
"@types/path-browserify": "^1.0.2",
|
"@types/path-browserify": "^1.0.2",
|
||||||
"@types/sanitize-html": "^2.11.0",
|
"@types/sanitize-html": "^2.11.0",
|
||||||
"@types/serialize-javascript": "^5.0.4",
|
"@types/serialize-javascript": "^5.0.4",
|
||||||
|
@ -117,7 +117,7 @@
|
||||||
"globals": "^15.9.0",
|
"globals": "^15.9.0",
|
||||||
"husky": "^9.1.4",
|
"husky": "^9.1.4",
|
||||||
"import-sort-style-module": "^6.0.0",
|
"import-sort-style-module": "^6.0.0",
|
||||||
"lint-staged": "^15.2.7",
|
"lint-staged": "^15.2.8",
|
||||||
"prettier": "^3.3.3",
|
"prettier": "^3.3.3",
|
||||||
"prettier-plugin-import-sort": "^0.0.7",
|
"prettier-plugin-import-sort": "^0.0.7",
|
||||||
"prettier-plugin-organize-imports": "^4.0.0",
|
"prettier-plugin-organize-imports": "^4.0.0",
|
||||||
|
|
102
pnpm-lock.yaml
102
pnpm-lock.yaml
|
@ -114,8 +114,8 @@ importers:
|
||||||
specifier: ^4.0.0
|
specifier: ^4.0.0
|
||||||
version: 4.0.0
|
version: 4.0.0
|
||||||
lemmy-js-client:
|
lemmy-js-client:
|
||||||
specifier: 0.19.4
|
specifier: 0.19.6-beta.1
|
||||||
version: 0.19.4
|
version: 0.19.6-beta.1
|
||||||
lodash.isequal:
|
lodash.isequal:
|
||||||
specifier: ^4.5.0
|
specifier: ^4.5.0
|
||||||
version: 4.5.0
|
version: 4.5.0
|
||||||
|
@ -235,8 +235,8 @@ importers:
|
||||||
specifier: ^2.0.10
|
specifier: ^2.0.10
|
||||||
version: 2.0.10
|
version: 2.0.10
|
||||||
'@types/node':
|
'@types/node':
|
||||||
specifier: ^22.0.2
|
specifier: ^22.1.0
|
||||||
version: 22.0.2
|
version: 22.1.0
|
||||||
'@types/path-browserify':
|
'@types/path-browserify':
|
||||||
specifier: ^1.0.2
|
specifier: ^1.0.2
|
||||||
version: 1.0.2
|
version: 1.0.2
|
||||||
|
@ -280,8 +280,8 @@ importers:
|
||||||
specifier: ^6.0.0
|
specifier: ^6.0.0
|
||||||
version: 6.0.0
|
version: 6.0.0
|
||||||
lint-staged:
|
lint-staged:
|
||||||
specifier: ^15.2.7
|
specifier: ^15.2.8
|
||||||
version: 15.2.7
|
version: 15.2.8
|
||||||
prettier:
|
prettier:
|
||||||
specifier: ^3.3.3
|
specifier: ^3.3.3
|
||||||
version: 3.3.3
|
version: 3.3.3
|
||||||
|
@ -1308,8 +1308,8 @@ packages:
|
||||||
'@types/node-forge@1.3.11':
|
'@types/node-forge@1.3.11':
|
||||||
resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==}
|
resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==}
|
||||||
|
|
||||||
'@types/node@22.0.2':
|
'@types/node@22.1.0':
|
||||||
resolution: {integrity: sha512-yPL6DyFwY5PiMVEwymNeqUTKsDczQBJ/5T7W/46RwLU/VH+AA8aT5TZkvBviLKLbbm0hlfftEkGrNzfRk/fofQ==}
|
resolution: {integrity: sha512-AOmuRF0R2/5j1knA3c6G3HOk523Ga+l+ZXltX8SF1+5oqcXijjfTd8fY3XRZqSihEu9XhtQnKYLmkFaoxgsJHw==}
|
||||||
|
|
||||||
'@types/path-browserify@1.0.2':
|
'@types/path-browserify@1.0.2':
|
||||||
resolution: {integrity: sha512-ZkC5IUqqIFPXx3ASTTybTzmQdwHwe2C0u3eL75ldQ6T9E9IWFJodn6hIfbZGab73DfyiHN4Xw15gNxUq2FbvBA==}
|
resolution: {integrity: sha512-ZkC5IUqqIFPXx3ASTTybTzmQdwHwe2C0u3eL75ldQ6T9E9IWFJodn6hIfbZGab73DfyiHN4Xw15gNxUq2FbvBA==}
|
||||||
|
@ -1692,8 +1692,8 @@ packages:
|
||||||
resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
|
resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
|
||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
|
|
||||||
browserslist@4.23.2:
|
browserslist@4.23.3:
|
||||||
resolution: {integrity: sha512-qkqSyistMYdxAcw+CzbZwlBy8AGmS/eEWs+sEV5TnLRGDOL+C5M2EnH6tlZyg0YoAxGJAFKh61En9BR941GnHA==}
|
resolution: {integrity: sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==}
|
||||||
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
|
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
|
@ -1736,8 +1736,8 @@ packages:
|
||||||
resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
|
resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
|
||||||
engines: {node: '>=6'}
|
engines: {node: '>=6'}
|
||||||
|
|
||||||
caniuse-lite@1.0.30001646:
|
caniuse-lite@1.0.30001647:
|
||||||
resolution: {integrity: sha512-dRg00gudiBDDTmUhClSdv3hqRfpbOnU28IpI1T6PBTLWa+kOj0681C8uML3PifYfREuBrVjDGhL3adYpBT6spw==}
|
resolution: {integrity: sha512-n83xdNiyeNcHpzWY+1aFbqCK7LuLfBricc4+alSQL2Xb6OR3XpnQAmlDG+pQcdTfiHRuLcQ96VOfrPSGiNJYSg==}
|
||||||
|
|
||||||
chalk@2.4.2:
|
chalk@2.4.2:
|
||||||
resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
|
resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
|
||||||
|
@ -3063,8 +3063,8 @@ packages:
|
||||||
leac@0.6.0:
|
leac@0.6.0:
|
||||||
resolution: {integrity: sha512-y+SqErxb8h7nE/fiEX07jsbuhrpO9lL8eca7/Y1nuWV2moNlXhyd59iDGcRf6moVyDMbmTNzL40SUyrFU/yDpg==}
|
resolution: {integrity: sha512-y+SqErxb8h7nE/fiEX07jsbuhrpO9lL8eca7/Y1nuWV2moNlXhyd59iDGcRf6moVyDMbmTNzL40SUyrFU/yDpg==}
|
||||||
|
|
||||||
lemmy-js-client@0.19.4:
|
lemmy-js-client@0.19.6-beta.1:
|
||||||
resolution: {integrity: sha512-k3d+YRDj3+JuuEP+nuEg27efR/e4m8oMk2BoC8jq9AnMrwSAKfsN2F2vG70Zke0amXtOclDZrCSHkIpNw99ikg==}
|
resolution: {integrity: sha512-CiTbTpqKA7t1daBMdkKVLVXUrpy2wSuxkoWrnK5sVvmBrlFq1jpqC9h9SgNngiVqSgx6Tvsg3asmvne7OaEZRQ==}
|
||||||
|
|
||||||
leven@3.1.0:
|
leven@3.1.0:
|
||||||
resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==}
|
resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==}
|
||||||
|
@ -3084,8 +3084,8 @@ packages:
|
||||||
linkify-it@5.0.0:
|
linkify-it@5.0.0:
|
||||||
resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==}
|
resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==}
|
||||||
|
|
||||||
lint-staged@15.2.7:
|
lint-staged@15.2.8:
|
||||||
resolution: {integrity: sha512-+FdVbbCZ+yoh7E/RosSdqKJyUM2OEjTciH0TFNkawKgvFp1zbGlEC39RADg+xKBG1R4mhoH2j85myBQZ5wR+lw==}
|
resolution: {integrity: sha512-PUWFf2zQzsd9EFU+kM1d7UP+AZDbKFKuj+9JNVTBkhUFhbg4MAt6WfyMMwBfM4lYqd4D2Jwac5iuTu9rVj4zCQ==}
|
||||||
engines: {node: '>=18.12.0'}
|
engines: {node: '>=18.12.0'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
|
@ -4394,8 +4394,8 @@ packages:
|
||||||
unbox-primitive@1.0.2:
|
unbox-primitive@1.0.2:
|
||||||
resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==}
|
resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==}
|
||||||
|
|
||||||
undici-types@6.11.1:
|
undici-types@6.13.0:
|
||||||
resolution: {integrity: sha512-mIDEX2ek50x0OlRgxryxsenE5XaQD4on5U2inY7RApK3SOJpofyw7uW2AyfMKkhAxXIceo2DeWGVGwyvng1GNQ==}
|
resolution: {integrity: sha512-xtFJHudx8S2DSoujjMd1WeWvn7KKWFRESZTMeL1RptAYERu29D6jphMjjY+vn96jvN3kVPDNxU/E13VTaXj6jg==}
|
||||||
|
|
||||||
unicode-canonical-property-names-ecmascript@2.0.0:
|
unicode-canonical-property-names-ecmascript@2.0.0:
|
||||||
resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==}
|
resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==}
|
||||||
|
@ -4696,8 +4696,8 @@ packages:
|
||||||
yallist@3.1.1:
|
yallist@3.1.1:
|
||||||
resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
|
resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
|
||||||
|
|
||||||
yaml@2.4.5:
|
yaml@2.5.0:
|
||||||
resolution: {integrity: sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==}
|
resolution: {integrity: sha512-2wWLbGbYDiSqqIKoPjar3MPgB94ErzCtrNE1FdqGuaO0pi2JGjmE8aW8TDZwzU7vuxcGRdL/4gPQwQ7hD5AMSw==}
|
||||||
engines: {node: '>= 14'}
|
engines: {node: '>= 14'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
|
@ -4772,7 +4772,7 @@ snapshots:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/compat-data': 7.25.2
|
'@babel/compat-data': 7.25.2
|
||||||
'@babel/helper-validator-option': 7.24.8
|
'@babel/helper-validator-option': 7.24.8
|
||||||
browserslist: 4.23.2
|
browserslist: 4.23.3
|
||||||
lru-cache: 5.1.1
|
lru-cache: 5.1.1
|
||||||
semver: 6.3.1
|
semver: 6.3.1
|
||||||
|
|
||||||
|
@ -5792,11 +5792,11 @@ snapshots:
|
||||||
'@types/body-parser@1.19.5':
|
'@types/body-parser@1.19.5':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/connect': 3.4.38
|
'@types/connect': 3.4.38
|
||||||
'@types/node': 22.0.2
|
'@types/node': 22.1.0
|
||||||
|
|
||||||
'@types/bonjour@3.5.13':
|
'@types/bonjour@3.5.13':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/node': 22.0.2
|
'@types/node': 22.1.0
|
||||||
|
|
||||||
'@types/bootstrap@5.2.10':
|
'@types/bootstrap@5.2.10':
|
||||||
dependencies:
|
dependencies:
|
||||||
|
@ -5805,11 +5805,11 @@ snapshots:
|
||||||
'@types/connect-history-api-fallback@1.5.4':
|
'@types/connect-history-api-fallback@1.5.4':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/express-serve-static-core': 4.19.5
|
'@types/express-serve-static-core': 4.19.5
|
||||||
'@types/node': 22.0.2
|
'@types/node': 22.1.0
|
||||||
|
|
||||||
'@types/connect@3.4.38':
|
'@types/connect@3.4.38':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/node': 22.0.2
|
'@types/node': 22.1.0
|
||||||
|
|
||||||
'@types/cookie-parser@1.4.7':
|
'@types/cookie-parser@1.4.7':
|
||||||
dependencies:
|
dependencies:
|
||||||
|
@ -5833,7 +5833,7 @@ snapshots:
|
||||||
|
|
||||||
'@types/express-serve-static-core@4.19.5':
|
'@types/express-serve-static-core@4.19.5':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/node': 22.0.2
|
'@types/node': 22.1.0
|
||||||
'@types/qs': 6.9.15
|
'@types/qs': 6.9.15
|
||||||
'@types/range-parser': 1.2.7
|
'@types/range-parser': 1.2.7
|
||||||
'@types/send': 0.17.4
|
'@types/send': 0.17.4
|
||||||
|
@ -5848,7 +5848,7 @@ snapshots:
|
||||||
'@types/glob@7.2.0':
|
'@types/glob@7.2.0':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/minimatch': 5.1.2
|
'@types/minimatch': 5.1.2
|
||||||
'@types/node': 22.0.2
|
'@types/node': 22.1.0
|
||||||
|
|
||||||
'@types/html-to-text@9.0.4': {}
|
'@types/html-to-text@9.0.4': {}
|
||||||
|
|
||||||
|
@ -5856,7 +5856,7 @@ snapshots:
|
||||||
|
|
||||||
'@types/http-proxy@1.17.14':
|
'@types/http-proxy@1.17.14':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/node': 22.0.2
|
'@types/node': 22.1.0
|
||||||
|
|
||||||
'@types/json-schema@7.0.15': {}
|
'@types/json-schema@7.0.15': {}
|
||||||
|
|
||||||
|
@ -5885,11 +5885,11 @@ snapshots:
|
||||||
|
|
||||||
'@types/node-forge@1.3.11':
|
'@types/node-forge@1.3.11':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/node': 22.0.2
|
'@types/node': 22.1.0
|
||||||
|
|
||||||
'@types/node@22.0.2':
|
'@types/node@22.1.0':
|
||||||
dependencies:
|
dependencies:
|
||||||
undici-types: 6.11.1
|
undici-types: 6.13.0
|
||||||
|
|
||||||
'@types/path-browserify@1.0.2': {}
|
'@types/path-browserify@1.0.2': {}
|
||||||
|
|
||||||
|
@ -5899,7 +5899,7 @@ snapshots:
|
||||||
|
|
||||||
'@types/resolve@1.17.1':
|
'@types/resolve@1.17.1':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/node': 22.0.2
|
'@types/node': 22.1.0
|
||||||
|
|
||||||
'@types/retry@0.12.2': {}
|
'@types/retry@0.12.2': {}
|
||||||
|
|
||||||
|
@ -5910,7 +5910,7 @@ snapshots:
|
||||||
'@types/send@0.17.4':
|
'@types/send@0.17.4':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/mime': 1.3.5
|
'@types/mime': 1.3.5
|
||||||
'@types/node': 22.0.2
|
'@types/node': 22.1.0
|
||||||
|
|
||||||
'@types/serialize-javascript@5.0.4': {}
|
'@types/serialize-javascript@5.0.4': {}
|
||||||
|
|
||||||
|
@ -5921,12 +5921,12 @@ snapshots:
|
||||||
'@types/serve-static@1.15.7':
|
'@types/serve-static@1.15.7':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/http-errors': 2.0.4
|
'@types/http-errors': 2.0.4
|
||||||
'@types/node': 22.0.2
|
'@types/node': 22.1.0
|
||||||
'@types/send': 0.17.4
|
'@types/send': 0.17.4
|
||||||
|
|
||||||
'@types/sockjs@0.3.36':
|
'@types/sockjs@0.3.36':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/node': 22.0.2
|
'@types/node': 22.1.0
|
||||||
|
|
||||||
'@types/toastify-js@1.12.3': {}
|
'@types/toastify-js@1.12.3': {}
|
||||||
|
|
||||||
|
@ -5934,7 +5934,7 @@ snapshots:
|
||||||
|
|
||||||
'@types/ws@8.5.12':
|
'@types/ws@8.5.12':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/node': 22.0.2
|
'@types/node': 22.1.0
|
||||||
|
|
||||||
'@typescript-eslint/eslint-plugin@8.0.0(@typescript-eslint/parser@8.0.0(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0)(typescript@5.5.4)':
|
'@typescript-eslint/eslint-plugin@8.0.0(@typescript-eslint/parser@8.0.0(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0)(typescript@5.5.4)':
|
||||||
dependencies:
|
dependencies:
|
||||||
|
@ -6345,12 +6345,12 @@ snapshots:
|
||||||
dependencies:
|
dependencies:
|
||||||
fill-range: 7.1.1
|
fill-range: 7.1.1
|
||||||
|
|
||||||
browserslist@4.23.2:
|
browserslist@4.23.3:
|
||||||
dependencies:
|
dependencies:
|
||||||
caniuse-lite: 1.0.30001646
|
caniuse-lite: 1.0.30001647
|
||||||
electron-to-chromium: 1.5.4
|
electron-to-chromium: 1.5.4
|
||||||
node-releases: 2.0.18
|
node-releases: 2.0.18
|
||||||
update-browserslist-db: 1.1.0(browserslist@4.23.2)
|
update-browserslist-db: 1.1.0(browserslist@4.23.3)
|
||||||
|
|
||||||
buffer-from@1.1.2: {}
|
buffer-from@1.1.2: {}
|
||||||
|
|
||||||
|
@ -6384,7 +6384,7 @@ snapshots:
|
||||||
|
|
||||||
callsites@3.1.0: {}
|
callsites@3.1.0: {}
|
||||||
|
|
||||||
caniuse-lite@1.0.30001646: {}
|
caniuse-lite@1.0.30001647: {}
|
||||||
|
|
||||||
chalk@2.4.2:
|
chalk@2.4.2:
|
||||||
dependencies:
|
dependencies:
|
||||||
|
@ -6534,7 +6534,7 @@ snapshots:
|
||||||
|
|
||||||
core-js-compat@3.37.1:
|
core-js-compat@3.37.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
browserslist: 4.23.2
|
browserslist: 4.23.3
|
||||||
|
|
||||||
core-util-is@1.0.3: {}
|
core-util-is@1.0.3: {}
|
||||||
|
|
||||||
|
@ -7766,13 +7766,13 @@ snapshots:
|
||||||
|
|
||||||
jest-worker@26.6.2:
|
jest-worker@26.6.2:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/node': 22.0.2
|
'@types/node': 22.1.0
|
||||||
merge-stream: 2.0.0
|
merge-stream: 2.0.0
|
||||||
supports-color: 7.2.0
|
supports-color: 7.2.0
|
||||||
|
|
||||||
jest-worker@27.5.1:
|
jest-worker@27.5.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/node': 22.0.2
|
'@types/node': 22.1.0
|
||||||
merge-stream: 2.0.0
|
merge-stream: 2.0.0
|
||||||
supports-color: 8.1.1
|
supports-color: 8.1.1
|
||||||
|
|
||||||
|
@ -7845,7 +7845,7 @@ snapshots:
|
||||||
|
|
||||||
leac@0.6.0: {}
|
leac@0.6.0: {}
|
||||||
|
|
||||||
lemmy-js-client@0.19.4: {}
|
lemmy-js-client@0.19.6-beta.1: {}
|
||||||
|
|
||||||
leven@3.1.0: {}
|
leven@3.1.0: {}
|
||||||
|
|
||||||
|
@ -7864,7 +7864,7 @@ snapshots:
|
||||||
dependencies:
|
dependencies:
|
||||||
uc.micro: 2.1.0
|
uc.micro: 2.1.0
|
||||||
|
|
||||||
lint-staged@15.2.7:
|
lint-staged@15.2.8:
|
||||||
dependencies:
|
dependencies:
|
||||||
chalk: 5.3.0
|
chalk: 5.3.0
|
||||||
commander: 12.1.0
|
commander: 12.1.0
|
||||||
|
@ -7875,7 +7875,7 @@ snapshots:
|
||||||
micromatch: 4.0.7
|
micromatch: 4.0.7
|
||||||
pidtree: 0.6.0
|
pidtree: 0.6.0
|
||||||
string-argv: 0.3.2
|
string-argv: 0.3.2
|
||||||
yaml: 2.4.5
|
yaml: 2.5.0
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
|
@ -9086,7 +9086,7 @@ snapshots:
|
||||||
has-symbols: 1.0.3
|
has-symbols: 1.0.3
|
||||||
which-boxed-primitive: 1.0.2
|
which-boxed-primitive: 1.0.2
|
||||||
|
|
||||||
undici-types@6.11.1: {}
|
undici-types@6.13.0: {}
|
||||||
|
|
||||||
unicode-canonical-property-names-ecmascript@2.0.0: {}
|
unicode-canonical-property-names-ecmascript@2.0.0: {}
|
||||||
|
|
||||||
|
@ -9111,9 +9111,9 @@ snapshots:
|
||||||
|
|
||||||
upath@1.2.0: {}
|
upath@1.2.0: {}
|
||||||
|
|
||||||
update-browserslist-db@1.1.0(browserslist@4.23.2):
|
update-browserslist-db@1.1.0(browserslist@4.23.3):
|
||||||
dependencies:
|
dependencies:
|
||||||
browserslist: 4.23.2
|
browserslist: 4.23.3
|
||||||
escalade: 3.1.2
|
escalade: 3.1.2
|
||||||
picocolors: 1.0.1
|
picocolors: 1.0.1
|
||||||
|
|
||||||
|
@ -9272,7 +9272,7 @@ snapshots:
|
||||||
'@webassemblyjs/wasm-parser': 1.12.1
|
'@webassemblyjs/wasm-parser': 1.12.1
|
||||||
acorn: 8.12.1
|
acorn: 8.12.1
|
||||||
acorn-import-attributes: 1.9.5(acorn@8.12.1)
|
acorn-import-attributes: 1.9.5(acorn@8.12.1)
|
||||||
browserslist: 4.23.2
|
browserslist: 4.23.3
|
||||||
chrome-trace-event: 1.0.4
|
chrome-trace-event: 1.0.4
|
||||||
enhanced-resolve: 5.17.1
|
enhanced-resolve: 5.17.1
|
||||||
es-module-lexer: 1.5.4
|
es-module-lexer: 1.5.4
|
||||||
|
@ -9507,7 +9507,7 @@ snapshots:
|
||||||
|
|
||||||
yallist@3.1.1: {}
|
yallist@3.1.1: {}
|
||||||
|
|
||||||
yaml@2.4.5: {}
|
yaml@2.5.0: {}
|
||||||
|
|
||||||
yocto-queue@0.1.0: {}
|
yocto-queue@0.1.0: {}
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,7 @@ import { Navbar } from "./navbar";
|
||||||
import "./styles.scss";
|
import "./styles.scss";
|
||||||
import { Theme } from "./theme";
|
import { Theme } from "./theme";
|
||||||
import AnonymousGuard from "../common/anonymous-guard";
|
import AnonymousGuard from "../common/anonymous-guard";
|
||||||
import AdultConsentModal from "../common/adult-consent-modal";
|
import AdultConsentModal from "../common/modal/adult-consent-modal";
|
||||||
import { destroyTippy, setupTippy } from "../../tippy";
|
import { destroyTippy, setupTippy } from "../../tippy";
|
||||||
|
|
||||||
function handleJumpToContent(event) {
|
function handleJumpToContent(event) {
|
||||||
|
|
|
@ -51,7 +51,7 @@ import { CommunityLink } from "../community/community-link";
|
||||||
import { PersonListing } from "../person/person-listing";
|
import { PersonListing } from "../person/person-listing";
|
||||||
import { CommentForm } from "./comment-form";
|
import { CommentForm } from "./comment-form";
|
||||||
import { CommentNodes } from "./comment-nodes";
|
import { CommentNodes } from "./comment-nodes";
|
||||||
import { BanUpdateForm } from "../common/mod-action-form-modal";
|
import { BanUpdateForm } from "../common/modal/mod-action-form-modal";
|
||||||
import CommentActionDropdown from "../common/content-actions/comment-action-dropdown";
|
import CommentActionDropdown from "../common/content-actions/comment-action-dropdown";
|
||||||
import { RequestState } from "../../services/HttpService";
|
import { RequestState } from "../../services/HttpService";
|
||||||
import { VoteDisplay } from "../common/vote-display";
|
import { VoteDisplay } from "../common/vote-display";
|
||||||
|
|
|
@ -14,9 +14,11 @@ import {
|
||||||
import ActionButton from "./action-button";
|
import ActionButton from "./action-button";
|
||||||
import classNames from "classnames";
|
import classNames from "classnames";
|
||||||
import { Link } from "inferno-router";
|
import { Link } from "inferno-router";
|
||||||
import ConfirmationModal from "../confirmation-modal";
|
import ConfirmationModal from "../modal/confirmation-modal";
|
||||||
import ViewVotesModal from "../view-votes-modal";
|
import ViewVotesModal from "../modal/view-votes-modal";
|
||||||
import ModActionFormModal, { BanUpdateForm } from "../mod-action-form-modal";
|
import ModActionFormModal, {
|
||||||
|
BanUpdateForm,
|
||||||
|
} from "../modal/mod-action-form-modal";
|
||||||
import { BanType, CommentNodeView, PurgeType } from "../../../interfaces";
|
import { BanType, CommentNodeView, PurgeType } from "../../../interfaces";
|
||||||
import { getApubName, hostname } from "@utils/helpers";
|
import { getApubName, hostname } from "@utils/helpers";
|
||||||
import { tippyMixin } from "../../mixins/tippy-mixin";
|
import { tippyMixin } from "../../mixins/tippy-mixin";
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
import { Component, LinkedEvent, createRef, linkEvent } from "inferno";
|
import { Component, LinkedEvent, createRef, linkEvent } from "inferno";
|
||||||
import { modalMixin } from "../mixins/modal-mixin";
|
import { modalMixin } from "../../mixins/modal-mixin";
|
||||||
import { adultConsentCookieKey } from "../../config";
|
import { adultConsentCookieKey } from "../../../config";
|
||||||
import { mdToHtml } from "../../markdown";
|
import { mdToHtml } from "../../../markdown";
|
||||||
import { I18NextService } from "../../services";
|
import { I18NextService } from "../../../services";
|
||||||
import { isHttps } from "@utils/env";
|
import { isHttps } from "@utils/env";
|
||||||
import { IsoData } from "../../interfaces";
|
import { IsoData } from "../../../interfaces";
|
||||||
import { setIsoData } from "@utils/app";
|
import { setIsoData } from "@utils/app";
|
||||||
|
|
||||||
interface AdultConsentModalProps {
|
interface AdultConsentModalProps {
|
|
@ -1,18 +1,11 @@
|
||||||
import {
|
import { Component, RefObject, createRef, linkEvent } from "inferno";
|
||||||
Component,
|
import { I18NextService } from "../../../services";
|
||||||
InfernoNode,
|
|
||||||
RefObject,
|
|
||||||
createRef,
|
|
||||||
linkEvent,
|
|
||||||
} from "inferno";
|
|
||||||
import { I18NextService } from "../../services";
|
|
||||||
import type { Modal } from "bootstrap";
|
import type { Modal } from "bootstrap";
|
||||||
import { Spinner } from "./icon";
|
import { Spinner } from "../icon";
|
||||||
import { LoadingEllipses } from "./loading-ellipses";
|
import { LoadingEllipses } from "../loading-ellipses";
|
||||||
import { modalMixin } from "../mixins/modal-mixin";
|
import { modalMixin } from "../../mixins/modal-mixin";
|
||||||
|
|
||||||
interface ConfirmationModalProps {
|
interface ConfirmationModalProps {
|
||||||
children?: InfernoNode;
|
|
||||||
onYes: () => Promise<void>;
|
onYes: () => Promise<void>;
|
||||||
onNo: () => void;
|
onNo: () => void;
|
||||||
message: string;
|
message: string;
|
71
src/shared/components/common/modal/display-modal.tsx
Normal file
71
src/shared/components/common/modal/display-modal.tsx
Normal file
|
@ -0,0 +1,71 @@
|
||||||
|
import { Component, InfernoNode, RefObject, createRef } from "inferno";
|
||||||
|
import type { Modal } from "bootstrap";
|
||||||
|
import { Spinner } from "../icon";
|
||||||
|
import { LoadingEllipses } from "../loading-ellipses";
|
||||||
|
import { modalMixin } from "../../mixins/modal-mixin";
|
||||||
|
|
||||||
|
interface DisplayModalProps {
|
||||||
|
children: InfernoNode;
|
||||||
|
loadingMessage?: string;
|
||||||
|
title: string;
|
||||||
|
onClose: () => void;
|
||||||
|
show: boolean;
|
||||||
|
loading?: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
@modalMixin
|
||||||
|
export default class DisplayModal extends Component<DisplayModalProps, any> {
|
||||||
|
readonly modalDivRef: RefObject<HTMLDivElement>;
|
||||||
|
modal?: Modal;
|
||||||
|
|
||||||
|
constructor(props: DisplayModalProps, context: any) {
|
||||||
|
super(props, context);
|
||||||
|
|
||||||
|
this.modalDivRef = createRef();
|
||||||
|
}
|
||||||
|
|
||||||
|
render() {
|
||||||
|
const { children, loadingMessage, title, onClose, loading } = this.props;
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div
|
||||||
|
className="modal fade"
|
||||||
|
id="display-modal"
|
||||||
|
tabIndex={-1}
|
||||||
|
aria-hidden
|
||||||
|
aria-labelledby="#displayModalTitle"
|
||||||
|
data-bs-backdrop="static"
|
||||||
|
ref={this.modalDivRef}
|
||||||
|
>
|
||||||
|
<div className="modal-dialog modal-fullscreen-sm-down">
|
||||||
|
<div className="modal-content">
|
||||||
|
<header className="modal-header">
|
||||||
|
<h3 className="modal-title" id="displayModalTitle">
|
||||||
|
{title}
|
||||||
|
</h3>
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
className="btn-close"
|
||||||
|
aria-label="Close"
|
||||||
|
onClick={onClose}
|
||||||
|
/>
|
||||||
|
</header>
|
||||||
|
<div className="modal-body">
|
||||||
|
{loading ? (
|
||||||
|
<div class="text-center align-middle text-body">
|
||||||
|
<Spinner large />
|
||||||
|
<div>
|
||||||
|
{loadingMessage}
|
||||||
|
<LoadingEllipses />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
) : (
|
||||||
|
children
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
|
@ -5,14 +5,14 @@ import {
|
||||||
createRef,
|
createRef,
|
||||||
linkEvent,
|
linkEvent,
|
||||||
} from "inferno";
|
} from "inferno";
|
||||||
import { I18NextService } from "../../services/I18NextService";
|
import { I18NextService } from "../../../services/I18NextService";
|
||||||
import { PurgeWarning, Spinner } from "./icon";
|
import { PurgeWarning, Spinner } from "../icon";
|
||||||
import { getApubName, randomStr } from "@utils/helpers";
|
import { getApubName, randomStr } from "@utils/helpers";
|
||||||
import type { Modal } from "bootstrap";
|
import type { Modal } from "bootstrap";
|
||||||
import classNames from "classnames";
|
import classNames from "classnames";
|
||||||
import { Community, Person } from "lemmy-js-client";
|
import { Community, Person } from "lemmy-js-client";
|
||||||
import { LoadingEllipses } from "./loading-ellipses";
|
import { LoadingEllipses } from "../loading-ellipses";
|
||||||
import { modalMixin } from "../mixins/modal-mixin";
|
import { modalMixin } from "../../mixins/modal-mixin";
|
||||||
|
|
||||||
export interface BanUpdateForm {
|
export interface BanUpdateForm {
|
||||||
reason?: string;
|
reason?: string;
|
||||||
|
@ -31,7 +31,7 @@ interface ModActionFormModalPropsCommunityBan {
|
||||||
modActionType: "community-ban";
|
modActionType: "community-ban";
|
||||||
onSubmit: (form: BanUpdateForm) => Promise<void>;
|
onSubmit: (form: BanUpdateForm) => Promise<void>;
|
||||||
creator: Person;
|
creator: Person;
|
||||||
community: Community;
|
community?: Community;
|
||||||
isBanned: boolean;
|
isBanned: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -328,7 +328,12 @@ export default class ModActionFormModal extends Component<
|
||||||
: "ban_from_community_with_name",
|
: "ban_from_community_with_name",
|
||||||
{
|
{
|
||||||
user: getApubName(this.props.creator),
|
user: getApubName(this.props.creator),
|
||||||
community: getApubName(this.props.community),
|
community: getApubName(
|
||||||
|
this.props.community ?? {
|
||||||
|
actor_id: "",
|
||||||
|
name: "",
|
||||||
|
},
|
||||||
|
),
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
|
@ -6,10 +6,10 @@ import {
|
||||||
createRef,
|
createRef,
|
||||||
linkEvent,
|
linkEvent,
|
||||||
} from "inferno";
|
} from "inferno";
|
||||||
import { I18NextService } from "../../services";
|
import { I18NextService } from "../../../services";
|
||||||
import { toast } from "../../toast";
|
import { toast } from "../../../toast";
|
||||||
import type { Modal } from "bootstrap";
|
import type { Modal } from "bootstrap";
|
||||||
import { modalMixin } from "../mixins/modal-mixin";
|
import { modalMixin } from "../../mixins/modal-mixin";
|
||||||
|
|
||||||
interface TotpModalProps {
|
interface TotpModalProps {
|
||||||
children?: InfernoNode;
|
children?: InfernoNode;
|
|
@ -5,10 +5,10 @@ import {
|
||||||
createRef,
|
createRef,
|
||||||
linkEvent,
|
linkEvent,
|
||||||
} from "inferno";
|
} from "inferno";
|
||||||
import { I18NextService } from "../../services";
|
import { I18NextService } from "../../../services";
|
||||||
import type { Modal } from "bootstrap";
|
import type { Modal } from "bootstrap";
|
||||||
import { Icon, Spinner } from "./icon";
|
import { Icon, Spinner } from "../icon";
|
||||||
import { Paginator } from "../common/paginator";
|
import { Paginator } from "../paginator";
|
||||||
import {
|
import {
|
||||||
ListCommentLikesResponse,
|
ListCommentLikesResponse,
|
||||||
ListPostLikesResponse,
|
ListPostLikesResponse,
|
||||||
|
@ -19,11 +19,11 @@ import {
|
||||||
HttpService,
|
HttpService,
|
||||||
LOADING_REQUEST,
|
LOADING_REQUEST,
|
||||||
RequestState,
|
RequestState,
|
||||||
} from "../../services/HttpService";
|
} from "../../../services/HttpService";
|
||||||
import { fetchLimit } from "../../config";
|
import { fetchLimit } from "../../../config";
|
||||||
import { PersonListing } from "../person/person-listing";
|
import { PersonListing } from "../../person/person-listing";
|
||||||
import { modalMixin } from "../mixins/modal-mixin";
|
import { modalMixin } from "../../mixins/modal-mixin";
|
||||||
import { UserBadges } from "./user-badges";
|
import { UserBadges } from "../user-badges";
|
||||||
import { isBrowser } from "@utils/browser";
|
import { isBrowser } from "@utils/browser";
|
||||||
|
|
||||||
interface ViewVotesModalProps {
|
interface ViewVotesModalProps {
|
|
@ -42,7 +42,7 @@ import { MediaUploads } from "../common/media-uploads";
|
||||||
import { Paginator } from "../common/paginator";
|
import { Paginator } from "../common/paginator";
|
||||||
import { snapToTop } from "@utils/browser";
|
import { snapToTop } from "@utils/browser";
|
||||||
import { isBrowser } from "@utils/browser";
|
import { isBrowser } from "@utils/browser";
|
||||||
import ConfirmationModal from "../common/confirmation-modal";
|
import ConfirmationModal from "../common/modal/confirmation-modal";
|
||||||
|
|
||||||
type AdminSettingsData = RouteDataResponse<{
|
type AdminSettingsData = RouteDataResponse<{
|
||||||
bannedRes: BannedPersonsResponse;
|
bannedRes: BannedPersonsResponse;
|
||||||
|
|
|
@ -15,7 +15,7 @@ import { toast } from "../../toast";
|
||||||
import { HtmlTags } from "../common/html-tags";
|
import { HtmlTags } from "../common/html-tags";
|
||||||
import { Spinner } from "../common/icon";
|
import { Spinner } from "../common/icon";
|
||||||
import PasswordInput from "../common/password-input";
|
import PasswordInput from "../common/password-input";
|
||||||
import TotpModal from "../common/totp-modal";
|
import TotpModal from "../common/modal/totp-modal";
|
||||||
import { UnreadCounterService } from "../../services";
|
import { UnreadCounterService } from "../../services";
|
||||||
import { RouteData } from "../../interfaces";
|
import { RouteData } from "../../interfaces";
|
||||||
import { IRoutePropsWithFetch } from "../../routes";
|
import { IRoutePropsWithFetch } from "../../routes";
|
||||||
|
|
|
@ -73,6 +73,7 @@ import {
|
||||||
SortType,
|
SortType,
|
||||||
SuccessResponse,
|
SuccessResponse,
|
||||||
TransferCommunity,
|
TransferCommunity,
|
||||||
|
RegistrationApplicationResponse,
|
||||||
} from "lemmy-js-client";
|
} from "lemmy-js-client";
|
||||||
import { fetchLimit, relTags } from "../../config";
|
import { fetchLimit, relTags } from "../../config";
|
||||||
import { InitialFetchRequest, PersonDetailsView } from "../../interfaces";
|
import { InitialFetchRequest, PersonDetailsView } from "../../interfaces";
|
||||||
|
@ -100,6 +101,7 @@ import { IRoutePropsWithFetch } from "../../routes";
|
||||||
import { MediaUploads } from "../common/media-uploads";
|
import { MediaUploads } from "../common/media-uploads";
|
||||||
import { cakeDate } from "@utils/helpers";
|
import { cakeDate } from "@utils/helpers";
|
||||||
import { isBrowser } from "@utils/browser";
|
import { isBrowser } from "@utils/browser";
|
||||||
|
import DisplayModal from "../common/modal/display-modal";
|
||||||
|
|
||||||
type ProfileData = RouteDataResponse<{
|
type ProfileData = RouteDataResponse<{
|
||||||
personRes: GetPersonDetailsResponse;
|
personRes: GetPersonDetailsResponse;
|
||||||
|
@ -112,6 +114,7 @@ interface ProfileState {
|
||||||
// to render the start of the profile while the new details are loading.
|
// to render the start of the profile while the new details are loading.
|
||||||
personDetailsRes: RequestState<GetPersonDetailsResponse>;
|
personDetailsRes: RequestState<GetPersonDetailsResponse>;
|
||||||
uploadsRes: RequestState<ListMediaResponse>;
|
uploadsRes: RequestState<ListMediaResponse>;
|
||||||
|
registrationRes: RequestState<RegistrationApplicationResponse>;
|
||||||
personBlocked: boolean;
|
personBlocked: boolean;
|
||||||
banReason?: string;
|
banReason?: string;
|
||||||
banExpireDays?: number;
|
banExpireDays?: number;
|
||||||
|
@ -119,6 +122,7 @@ interface ProfileState {
|
||||||
removeData: boolean;
|
removeData: boolean;
|
||||||
siteRes: GetSiteResponse;
|
siteRes: GetSiteResponse;
|
||||||
isIsomorphic: boolean;
|
isIsomorphic: boolean;
|
||||||
|
showRegistrationDialog: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
interface ProfileProps {
|
interface ProfileProps {
|
||||||
|
@ -204,6 +208,8 @@ export class Profile extends Component<ProfileRouteProps, ProfileState> {
|
||||||
showBanDialog: false,
|
showBanDialog: false,
|
||||||
removeData: false,
|
removeData: false,
|
||||||
isIsomorphic: false,
|
isIsomorphic: false,
|
||||||
|
showRegistrationDialog: false,
|
||||||
|
registrationRes: EMPTY_REQUEST,
|
||||||
};
|
};
|
||||||
|
|
||||||
loadingSettled() {
|
loadingSettled() {
|
||||||
|
@ -252,6 +258,8 @@ export class Profile extends Component<ProfileRouteProps, ProfileState> {
|
||||||
this.handlePurgePost = this.handlePurgePost.bind(this);
|
this.handlePurgePost = this.handlePurgePost.bind(this);
|
||||||
this.handleFeaturePost = this.handleFeaturePost.bind(this);
|
this.handleFeaturePost = this.handleFeaturePost.bind(this);
|
||||||
this.handleModBanSubmit = this.handleModBanSubmit.bind(this);
|
this.handleModBanSubmit = this.handleModBanSubmit.bind(this);
|
||||||
|
this.handleRegistrationShow = this.handleRegistrationShow.bind(this);
|
||||||
|
this.handleRegistrationClose = this.handleRegistrationClose.bind(this);
|
||||||
|
|
||||||
// Only fetch the data if coming from another route
|
// Only fetch the data if coming from another route
|
||||||
if (FirstLoadService.isFirstLoad) {
|
if (FirstLoadService.isFirstLoad) {
|
||||||
|
@ -628,6 +636,8 @@ export class Profile extends Component<ProfileRouteProps, ProfileState> {
|
||||||
personBlocked,
|
personBlocked,
|
||||||
siteRes: { admins },
|
siteRes: { admins },
|
||||||
showBanDialog,
|
showBanDialog,
|
||||||
|
showRegistrationDialog,
|
||||||
|
registrationRes,
|
||||||
} = this.state;
|
} = this.state;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
@ -752,6 +762,46 @@ export class Profile extends Component<ProfileRouteProps, ProfileState> {
|
||||||
{capitalizeFirstLetter(I18NextService.i18n.t("unban"))}
|
{capitalizeFirstLetter(I18NextService.i18n.t("unban"))}
|
||||||
</button>
|
</button>
|
||||||
))}
|
))}
|
||||||
|
{amAdmin() && (
|
||||||
|
<>
|
||||||
|
<button
|
||||||
|
className={
|
||||||
|
"d-flex registration-self-start btn btn-secondary me-2"
|
||||||
|
}
|
||||||
|
aria-label={I18NextService.i18n.t("view_registration")}
|
||||||
|
onClick={this.handleRegistrationShow}
|
||||||
|
>
|
||||||
|
{I18NextService.i18n.t("view_registration")}
|
||||||
|
</button>
|
||||||
|
{showRegistrationDialog && (
|
||||||
|
<DisplayModal
|
||||||
|
onClose={this.handleRegistrationClose}
|
||||||
|
loadingMessage={I18NextService.i18n.t(
|
||||||
|
"loading_registration",
|
||||||
|
)}
|
||||||
|
title={I18NextService.i18n.t("registration_for_user", {
|
||||||
|
name: pv.person.display_name ?? pv.person.name,
|
||||||
|
})}
|
||||||
|
show={showRegistrationDialog}
|
||||||
|
loading={registrationRes.state === "loading"}
|
||||||
|
>
|
||||||
|
{registrationRes.state === "success" ? (
|
||||||
|
<article
|
||||||
|
dangerouslySetInnerHTML={mdToHtml(
|
||||||
|
registrationRes.data.registration_application
|
||||||
|
.registration_application.answer,
|
||||||
|
() => this.forceUpdate(),
|
||||||
|
)}
|
||||||
|
/>
|
||||||
|
) : registrationRes.state === "failed" ? (
|
||||||
|
I18NextService.i18n.t("fetch_registration_error")
|
||||||
|
) : (
|
||||||
|
""
|
||||||
|
)}
|
||||||
|
</DisplayModal>
|
||||||
|
)}
|
||||||
|
</>
|
||||||
|
)}
|
||||||
</div>
|
</div>
|
||||||
{pv.person.bio && (
|
{pv.person.bio && (
|
||||||
<div className="d-flex align-items-center mb-2">
|
<div className="d-flex align-items-center mb-2">
|
||||||
|
@ -937,6 +987,32 @@ export class Profile extends Component<ProfileRouteProps, ProfileState> {
|
||||||
i.setState({ showBanDialog: false });
|
i.setState({ showBanDialog: false });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
handleRegistrationShow() {
|
||||||
|
if (this.state.registrationRes.state !== "success") {
|
||||||
|
this.setState({ registrationRes: LOADING_REQUEST });
|
||||||
|
}
|
||||||
|
|
||||||
|
this.setState({ showRegistrationDialog: true });
|
||||||
|
|
||||||
|
if (this.state.personDetailsRes.state === "success") {
|
||||||
|
HttpService.client
|
||||||
|
.getRegistrationApplication({
|
||||||
|
person_id: this.state.personDetailsRes.data.person_view.person.id,
|
||||||
|
})
|
||||||
|
.then(res => {
|
||||||
|
this.setState({ registrationRes: res });
|
||||||
|
|
||||||
|
if (res.state === "failed") {
|
||||||
|
toast(I18NextService.i18n.t("fetch_registration_error"), "danger");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
handleRegistrationClose() {
|
||||||
|
this.setState({ showRegistrationDialog: false });
|
||||||
|
}
|
||||||
|
|
||||||
async handleModBanSubmit(i: Profile, event: any) {
|
async handleModBanSubmit(i: Profile, event: any) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
const { removeData, banReason, banExpireDays } = i.state;
|
const { removeData, banReason, banExpireDays } = i.state;
|
||||||
|
|
|
@ -65,7 +65,7 @@ import Tabs from "../common/tabs";
|
||||||
import { CommunityLink } from "../community/community-link";
|
import { CommunityLink } from "../community/community-link";
|
||||||
import { PersonListing } from "./person-listing";
|
import { PersonListing } from "./person-listing";
|
||||||
import { InitialFetchRequest } from "../../interfaces";
|
import { InitialFetchRequest } from "../../interfaces";
|
||||||
import TotpModal from "../common/totp-modal";
|
import TotpModal from "../common/modal/totp-modal";
|
||||||
import { LoadingEllipses } from "../common/loading-ellipses";
|
import { LoadingEllipses } from "../common/loading-ellipses";
|
||||||
import {
|
import {
|
||||||
isBrowser,
|
isBrowser,
|
||||||
|
|
|
@ -48,7 +48,7 @@ import { CommunityLink } from "../community/community-link";
|
||||||
import { PersonListing } from "../person/person-listing";
|
import { PersonListing } from "../person/person-listing";
|
||||||
import { MetadataCard } from "./metadata-card";
|
import { MetadataCard } from "./metadata-card";
|
||||||
import { PostForm } from "./post-form";
|
import { PostForm } from "./post-form";
|
||||||
import { BanUpdateForm } from "../common/mod-action-form-modal";
|
import { BanUpdateForm } from "../common/modal/mod-action-form-modal";
|
||||||
import PostActionDropdown from "../common/content-actions/post-action-dropdown";
|
import PostActionDropdown from "../common/content-actions/post-action-dropdown";
|
||||||
import { CrossPostParams } from "@utils/types";
|
import { CrossPostParams } from "@utils/types";
|
||||||
import { RequestState } from "../../services/HttpService";
|
import { RequestState } from "../../services/HttpService";
|
||||||
|
|
|
@ -14,7 +14,7 @@ import { Icon, Spinner } from "../common/icon";
|
||||||
import { MomentTime } from "../common/moment-time";
|
import { MomentTime } from "../common/moment-time";
|
||||||
import { PersonListing } from "../person/person-listing";
|
import { PersonListing } from "../person/person-listing";
|
||||||
import { PrivateMessageForm } from "./private-message-form";
|
import { PrivateMessageForm } from "./private-message-form";
|
||||||
import ModActionFormModal from "../common/mod-action-form-modal";
|
import ModActionFormModal from "../common/modal/mod-action-form-modal";
|
||||||
import { tippyMixin } from "../mixins/tippy-mixin";
|
import { tippyMixin } from "../mixins/tippy-mixin";
|
||||||
|
|
||||||
interface PrivateMessageState {
|
interface PrivateMessageState {
|
||||||
|
|
Loading…
Reference in a new issue