diff --git a/.eslintrc.cjs b/.eslintrc.cjs new file mode 100644 index 00000000..4bd7b71c --- /dev/null +++ b/.eslintrc.cjs @@ -0,0 +1,8 @@ +module.exports = { + extends: ['react-app'], + rules: { + 'no-unused-vars': 'off', + '@typescript-eslint/no-unused-vars': 'warn' + }, + ignorePatterns: ['android/**', 'build/**', 'node_modules/**', 'public/**', 'electron/**'] +}; \ No newline at end of file diff --git a/android/.idea/compiler.xml b/android/.idea/compiler.xml new file mode 100644 index 00000000..b86273d9 --- /dev/null +++ b/android/.idea/compiler.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/android/.idea/deploymentTargetSelector.xml b/android/.idea/deploymentTargetSelector.xml new file mode 100644 index 00000000..b268ef36 --- /dev/null +++ b/android/.idea/deploymentTargetSelector.xml @@ -0,0 +1,10 @@ + + + + + + + + + \ No newline at end of file diff --git a/android/.idea/misc.xml b/android/.idea/misc.xml new file mode 100644 index 00000000..2266c1c9 --- /dev/null +++ b/android/.idea/misc.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/android/.idea/runConfigurations.xml b/android/.idea/runConfigurations.xml new file mode 100644 index 00000000..931b96c3 --- /dev/null +++ b/android/.idea/runConfigurations.xml @@ -0,0 +1,13 @@ + + + + + + \ No newline at end of file diff --git a/android/gradle/wrapper/gradle-wrapper.jar b/android/gradle/wrapper/gradle-wrapper.jar index e708b1c0..2c352119 100644 Binary files a/android/gradle/wrapper/gradle-wrapper.jar and b/android/gradle/wrapper/gradle-wrapper.jar differ diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties index f42e62f3..09523c0e 100644 --- a/android/gradle/wrapper/gradle-wrapper.properties +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,7 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip +networkTimeout=10000 +validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/android/gradlew b/android/gradlew index 4f906e0c..f5feea6d 100755 --- a/android/gradlew +++ b/android/gradlew @@ -1,7 +1,7 @@ -#!/usr/bin/env sh +#!/bin/sh # -# Copyright 2015 the original author or authors. +# Copyright © 2015-2021 the original authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -15,69 +15,104 @@ # See the License for the specific language governing permissions and # limitations under the License. # +# SPDX-License-Identifier: Apache-2.0 +# ############################################################################## -## -## Gradle start up script for UN*X -## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# ############################################################################## # Attempt to set APP_HOME + # Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s +' "$PWD" ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" +MAX_FD=maximum warn () { echo "$*" -} +} >&2 die () { echo echo "$*" echo exit 1 -} +} >&2 # OS specific support (must be 'true' or 'false'). cygwin=false msys=false darwin=false nonstop=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; - NONSTOP* ) - nonstop=true - ;; +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; esac CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar @@ -87,9 +122,9 @@ CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" + JAVACMD=$JAVA_HOME/jre/sh/java else - JAVACMD="$JAVA_HOME/bin/java" + JAVACMD=$JAVA_HOME/bin/java fi if [ ! -x "$JAVACMD" ] ; then die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME @@ -98,88 +133,120 @@ Please set the JAVA_HOME variable in your environment to match the location of your Java installation." fi else - JAVACMD="java" - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + JAVACMD=java + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the location of your Java installation." + fi fi # Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi -fi - -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi - -# For Cygwin or MSYS, switch paths to Windows format before running java -if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi - # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" - fi - i=`expr $i + 1` - done - case $i in - 0) set -- ;; - 1) set -- "$args0" ;; - 2) set -- "$args0" "$args1" ;; - 3) set -- "$args0" "$args1" "$args2" ;; - 4) set -- "$args0" "$args1" "$args2" "$args3" ;; - 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" esac fi -# Escape application args -save () { - for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done - echo " " -} -APP_ARGS=`save "$@"` +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. -# Collect all arguments for the java command, following the shell quoting and substitution rules -eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' exec "$JAVACMD" "$@" diff --git a/android/gradlew.bat b/android/gradlew.bat index ac1b06f9..9b42019c 100644 --- a/android/gradlew.bat +++ b/android/gradlew.bat @@ -13,8 +13,10 @@ @rem See the License for the specific language governing permissions and @rem limitations under the License. @rem +@rem SPDX-License-Identifier: Apache-2.0 +@rem -@if "%DEBUG%" == "" @echo off +@if "%DEBUG%"=="" @echo off @rem ########################################################################## @rem @rem Gradle startup script for Windows @@ -25,7 +27,8 @@ if "%OS%"=="Windows_NT" setlocal set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% @@ -40,13 +43,13 @@ if defined JAVA_HOME goto findJavaFromJavaHome set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto execute +if %ERRORLEVEL% equ 0 goto execute -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. +echo. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 goto fail @@ -56,11 +59,11 @@ set JAVA_EXE=%JAVA_HOME%/bin/java.exe if exist "%JAVA_EXE%" goto execute -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 goto fail @@ -75,13 +78,15 @@ set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar :end @rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd +if %ERRORLEVEL% equ 0 goto mainEnd :fail rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% :mainEnd if "%OS%"=="Windows_NT" endlocal diff --git a/electron/vite-config.js b/electron/vite-config.js new file mode 100644 index 00000000..5027bdf6 --- /dev/null +++ b/electron/vite-config.js @@ -0,0 +1,13 @@ +import { defineConfig } from 'vite'; +import path from 'path'; + +export default defineConfig({ + build: { + outDir: 'dist', + rollupOptions: { + input: { + main: path.resolve(__dirname, 'main.js'), + }, + }, + }, +}); diff --git a/index.html b/index.html new file mode 100644 index 00000000..15ca56a2 --- /dev/null +++ b/index.html @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + plebchan + + + +
+ + + + diff --git a/package.json b/package.json index d50e704b..84d0096a 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,8 @@ "electron-context-menu": "3.3.0", "electron-is-dev": "2.0.0", "ext-name": "5.0.0", + "fs-extra": "11.3.0", + "http-proxy": "1.18.1", "i18next": "23.5.1", "i18next-browser-languagedetector": "7.1.0", "i18next-http-backend": "2.2.2", @@ -29,14 +31,12 @@ "lodash": "4.17.21", "memoizee": "0.4.15", "prettier": "3.0.3", - "react": "18.2.0", - "react-dom": "18.2.0", - "react-draggable": "4.4.6", + "react": "19.0.0", + "react-dom": "19.0.0", "react-i18next": "13.2.2", "react-markdown": "8.0.6", "react-router-dom": "6.16.0", "react-router-hash-link": "2.4.3", - "react-scripts": "5.0.1", "react-virtuoso": "4.12.3", "rehype-sanitize": "5.0.1", "remark-gfm": "3.0.1", @@ -46,12 +46,12 @@ "zustand": "4.4.3" }, "scripts": { - "start": "react-scripts start", - "build": "cross-env PUBLIC_URL=./ GENERATE_SOURCEMAP=false react-scripts build", - "build-netlify": "cross-env PUBLIC_URL=./ GENERATE_SOURCEMAP=true REACT_APP_COMMIT_REF=$COMMIT_REF CI='' react-scripts build", - "test": "react-scripts test", - "analyze-bundle": "cross-env PUBLIC_URL=./ GENERATE_SOURCEMAP=true react-scripts build && source-map-explorer 'build/static/js/*.js'", - "eject": "react-scripts eject", + "start": "vite", + "build": "cross-env PUBLIC_URL=./ GENERATE_SOURCEMAP=false vite build", + "build-netlify": "cross-env NODE_OPTIONS=\"--max_old_space_size=4096\" PUBLIC_URL=./ GENERATE_SOURCEMAP=true VITE_COMMIT_REF=$COMMIT_REF CI='' vite build", + "test": "vitest", + "preview": "vite preview", + "analyze-bundle": "cross-env PUBLIC_URL=./ GENERATE_SOURCEMAP=true vite build && source-map-explorer 'build/assets/*.js'", "electron": "yarn electron:before && electron .", "electron:no-delete-data": "yarn electron:before:download-ipfs && electron .", "electron:start": "concurrently \"cross-env BROWSER=none yarn start\" \"wait-on http://localhost:3000 && yarn electron\"", @@ -64,13 +64,8 @@ "electron:before:delete-data": "rimraf .plebbit", "android:build:icons": "cordova-res android --skip-config --copy --resources /tmp/plebbit-react-android-icons --icon-source ./android/icons/icon.png --splash-source ./android/icons/splash.png --icon-foreground-source ./android/icons/icon-foreground.png --icon-background-source '#ffffee'", "prettier": "prettier {src,electron}/**/*.{js,ts,tsx} --write", - "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s -r 0" - }, - "eslintConfig": { - "extends": [ - "react-app", - "react-app/jest" - ] + "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s -r 0", + "android:build": "yarn build && npx cap sync android && npx cap open android" }, "browserslist": { "production": [ @@ -91,16 +86,35 @@ "@capacitor/cli": "5.0.0", "@capacitor/core": "5.0.0", "@types/memoizee": "0.4.9", + "@typescript-eslint/eslint-plugin": "8.26.0", + "@typescript-eslint/parser": "8.26.0", + "@vitejs/plugin-react": "4.3.4", + "assert": "2.1.0", + "babel-plugin-react-compiler": "19.0.0-beta-40c6c23-20250301", + "buffer": "6.0.3", "concurrently": "8.0.1", "conventional-changelog-cli": "4.1.0", "cordova-res": "0.15.4", "cross-env": "7.0.3", + "crypto-browserify": "3.12.1", "cz-conventional-changelog": "3.3.0", "decompress": "4.2.1", "electron": "28.2.3", "electron-builder": "24.13.2", + "electron-rebuild": "3.2.9", + "eslint": "8.56.0", + "eslint-config-react-app": "7.0.1", + "eslint-plugin-react": "7.37.4", + "eslint-plugin-react-compiler": "19.0.0-beta-40c6c23-20250301", + "eslint-plugin-react-hooks": "5.2.0", "husky": "4.3.8", + "isomorphic-fetch": "3.0.0", "lint-staged": "12.3.8", + "stream-browserify": "3.0.0", + "vite": "6.2.0", + "vite-plugin-eslint": "1.8.1", + "vite-plugin-node-polyfills": "0.23.0", + "vite-plugin-pwa": "0.21.1", "wait-on": "7.0.1" }, "main": "electron/main.js", diff --git a/public/index.html b/public/index.html deleted file mode 100644 index 2ce3d95f..00000000 --- a/public/index.html +++ /dev/null @@ -1,72 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - plebchan - - - -
- - - diff --git a/public/translations/ar/default.json b/public/translations/ar/default.json index 71d51eca..ebce90c7 100644 --- a/public/translations/ar/default.json +++ b/public/translations/ar/default.json @@ -290,5 +290,6 @@ "this_thread_was_deleted": "تم حذف هذا الموضوع بواسطة مؤلفه", "this_thread_was_removed": "تم إزالة هذا الموضوع بواسطة مشرفي المنتدى", "this_reply_was_deleted": "تم حذف هذه الرد من قبل مؤلفه", - "this_reply_was_removed": "تمت إزالة هذه الرد من قبل مشرفي المنتدى" + "this_reply_was_removed": "تمت إزالة هذه الرد من قبل مشرفي المنتدى", + "not_mod_of_any_board": "أنت لست مشرفًا في أي لوحة." } \ No newline at end of file diff --git a/public/translations/bn/default.json b/public/translations/bn/default.json index 5f0cc0ab..a4451490 100644 --- a/public/translations/bn/default.json +++ b/public/translations/bn/default.json @@ -290,5 +290,6 @@ "this_thread_was_deleted": "এই থ্রেডটি এর লেখক দ্বারা মুছে ফেলা হয়েছে", "this_thread_was_removed": "এই থ্রেডটি বোর্ড moderators দ্বারা মুছে ফেলা হয়েছে", "this_reply_was_deleted": "এই প্রতিক্রিয়া তার লেখক দ্বারা মুছে ফেলা হয়েছে", - "this_reply_was_removed": "এই প্রতিক্রিয়া বোর্ড পরিচালকদের দ্বারা সরানো হয়েছে" + "this_reply_was_removed": "এই প্রতিক্রিয়া বোর্ড পরিচালকদের দ্বারা সরানো হয়েছে", + "not_mod_of_any_board": "আপনি কোনও বোর্ডের মড নন।" } \ No newline at end of file diff --git a/public/translations/cs/default.json b/public/translations/cs/default.json index cda7faf4..4b1cecc8 100644 --- a/public/translations/cs/default.json +++ b/public/translations/cs/default.json @@ -290,5 +290,6 @@ "this_thread_was_deleted": "Toto vlákno bylo smazáno jeho autorem", "this_thread_was_removed": "Toto vlákno bylo odstraněno moderátory fóra", "this_reply_was_deleted": "Tato odpověď byla smazána autorem", - "this_reply_was_removed": "Tato odpověď byla odstraněna moderátory fóra" + "this_reply_was_removed": "Tato odpověď byla odstraněna moderátory fóra", + "not_mod_of_any_board": "Nejste moderátor žádné desky." } \ No newline at end of file diff --git a/public/translations/da/default.json b/public/translations/da/default.json index 067269aa..dfaab88e 100644 --- a/public/translations/da/default.json +++ b/public/translations/da/default.json @@ -290,5 +290,6 @@ "this_thread_was_deleted": "Denne tråd blev slettet af dens forfatter", "this_thread_was_removed": "Denne tråd blev fjernet af boardmoderatorer", "this_reply_was_deleted": "Dette svar blev slettet af forfatteren", - "this_reply_was_removed": "Dette svar blev fjernet af forummoderatorer" + "this_reply_was_removed": "Dette svar blev fjernet af forummoderatorer", + "not_mod_of_any_board": "Du er ikke moderator for nogen tavler." } \ No newline at end of file diff --git a/public/translations/de/default.json b/public/translations/de/default.json index e57ea7a3..d2b1eab4 100644 --- a/public/translations/de/default.json +++ b/public/translations/de/default.json @@ -290,5 +290,6 @@ "this_thread_was_deleted": "Dieser Thread wurde von seinem Autor gelöscht", "this_thread_was_removed": "Dieser Thread wurde von den Moderatoren des Boards entfernt", "this_reply_was_deleted": "Diese Antwort wurde vom Autor gelöscht", - "this_reply_was_removed": "Diese Antwort wurde von den Forenmoderatoren entfernt" + "this_reply_was_removed": "Diese Antwort wurde von den Forenmoderatoren entfernt", + "not_mod_of_any_board": "Du bist kein Moderator eines Boards." } \ No newline at end of file diff --git a/public/translations/el/default.json b/public/translations/el/default.json index 33b8bae3..fcf0fb0e 100644 --- a/public/translations/el/default.json +++ b/public/translations/el/default.json @@ -290,5 +290,6 @@ "this_thread_was_deleted": "Αυτή η συζήτηση διαγράφηκε από τον συγγραφέα της", "this_thread_was_removed": "Αυτή η συζήτηση αφαιρέθηκε από τους διαχειριστές του φόρουμ", "this_reply_was_deleted": "Αυτή η απάντηση διαγράφηκε από τον συγγραφέα της", - "this_reply_was_removed": "Η απάντηση αυτή αφαιρέθηκε από τους διαχειριστές του φόρουμ" + "this_reply_was_removed": "Η απάντηση αυτή αφαιρέθηκε από τους διαχειριστές του φόρουμ", + "not_mod_of_any_board": "Δεν είστε διαχειριστής σε καμία κοινότητα." } \ No newline at end of file diff --git a/public/translations/en/default.json b/public/translations/en/default.json index 89bb0963..84d51c92 100644 --- a/public/translations/en/default.json +++ b/public/translations/en/default.json @@ -290,5 +290,6 @@ "this_thread_was_deleted": "This thread was deleted by its author", "this_thread_was_removed": "This thread was removed by board moderators", "this_reply_was_deleted": "This reply was deleted by its author", - "this_reply_was_removed": "This reply was removed by board moderators" + "this_reply_was_removed": "This reply was removed by board moderators", + "not_mod_of_any_board": "You are not a mod of any board." } \ No newline at end of file diff --git a/public/translations/es/default.json b/public/translations/es/default.json index cfc1db02..49807a11 100644 --- a/public/translations/es/default.json +++ b/public/translations/es/default.json @@ -290,5 +290,6 @@ "this_thread_was_deleted": "Este hilo fue eliminado por su autor", "this_thread_was_removed": "Este hilo fue eliminado por los moderadores del foro", "this_reply_was_deleted": "Esta respuesta fue eliminada por su autor", - "this_reply_was_removed": "Esta respuesta fue eliminada por los moderadores del foro" + "this_reply_was_removed": "Esta respuesta fue eliminada por los moderadores del foro", + "not_mod_of_any_board": "No eres moderador de ningún tablero." } \ No newline at end of file diff --git a/public/translations/fa/default.json b/public/translations/fa/default.json index 87e363d5..b9b8f812 100644 --- a/public/translations/fa/default.json +++ b/public/translations/fa/default.json @@ -290,5 +290,6 @@ "this_thread_was_deleted": "این موضوع توسط نویسنده‌اش حذف شد", "this_thread_was_removed": "این تاپیک توسط مدیران انجمن حذف شد", "this_reply_was_deleted": "این پاسخ توسط نویسنده‌اش حذف شد", - "this_reply_was_removed": "این پاسخ توسط مدیران انجمن حذف شد" + "this_reply_was_removed": "این پاسخ توسط مدیران انجمن حذف شد", + "not_mod_of_any_board": "شما هیچ تابلو مدیر نیستید." } \ No newline at end of file diff --git a/public/translations/fi/default.json b/public/translations/fi/default.json index b198ea20..2cba44fa 100644 --- a/public/translations/fi/default.json +++ b/public/translations/fi/default.json @@ -290,5 +290,6 @@ "this_thread_was_deleted": "Tämä ketju poistettiin sen kirjoittajan toimesta", "this_thread_was_removed": "Tämä ketju poistettiin foorumin moderaattoreiden toimesta", "this_reply_was_deleted": "Tämä vastaus poistettiin sen kirjoittajalta", - "this_reply_was_removed": "Tämä vastaus poistettiin foorumin moderaattoreiden toimesta" + "this_reply_was_removed": "Tämä vastaus poistettiin foorumin moderaattoreiden toimesta", + "not_mod_of_any_board": "Et ole moderaattori missään taulussa." } \ No newline at end of file diff --git a/public/translations/fil/default.json b/public/translations/fil/default.json index 3897cc48..1fde0af6 100644 --- a/public/translations/fil/default.json +++ b/public/translations/fil/default.json @@ -290,5 +290,6 @@ "this_thread_was_deleted": "Ang thread na ito ay tinanggal ng may-akda nito", "this_thread_was_removed": "Inalis ang thread na ito ng mga moderator ng board", "this_reply_was_deleted": "Ang tugon na ito ay tinanggal ng may-akda nito", - "this_reply_was_removed": "Ang sagot na ito ay tinanggal ng mga moderator ng board" + "this_reply_was_removed": "Ang sagot na ito ay tinanggal ng mga moderator ng board", + "not_mod_of_any_board": "Hindi ka mod ng anumang board." } \ No newline at end of file diff --git a/public/translations/fr/default.json b/public/translations/fr/default.json index 90a78cf0..890413c5 100644 --- a/public/translations/fr/default.json +++ b/public/translations/fr/default.json @@ -290,5 +290,6 @@ "this_thread_was_deleted": "Ce sujet a été supprimé par son auteur", "this_thread_was_removed": "Ce sujet a été supprimé par les modérateurs du forum", "this_reply_was_deleted": "Cette réponse a été supprimée par son auteur", - "this_reply_was_removed": "Cette réponse a été supprimée par les modérateurs du forum" + "this_reply_was_removed": "Cette réponse a été supprimée par les modérateurs du forum", + "not_mod_of_any_board": "Vous n'êtes pas modérateur de n'aucun forum." } \ No newline at end of file diff --git a/public/translations/he/default.json b/public/translations/he/default.json index a8e5d934..117f53bb 100644 --- a/public/translations/he/default.json +++ b/public/translations/he/default.json @@ -290,5 +290,6 @@ "this_thread_was_deleted": "השרשור הזה נמחק על ידי המחבר שלו", "this_thread_was_removed": "השרשור הזה הוסר על ידי מנהלי הפורום", "this_reply_was_deleted": "תשובה זו נמחקה על ידי המחבר שלה", - "this_reply_was_removed": "תשובה זו הוסרה על ידי מנהלי הפורום" + "this_reply_was_removed": "תשובה זו הוסרה על ידי מנהלי הפורום", + "not_mod_of_any_board": "אתה לא מוד בכל לוח." } \ No newline at end of file diff --git a/public/translations/hi/default.json b/public/translations/hi/default.json index 613622d8..bdd422a4 100644 --- a/public/translations/hi/default.json +++ b/public/translations/hi/default.json @@ -290,5 +290,6 @@ "this_thread_was_deleted": "इस थ्रेड को इसके लेखक ने हटा दिया है", "this_thread_was_removed": "यह थ्रेड बोर्ड मॉडरेटर्स द्वारा हटा दिया गया था", "this_reply_was_deleted": "इस उत्तर को इसके लेखक द्वारा हटा दिया गया था", - "this_reply_was_removed": "यह उत्तर बोर्ड मॉडरेटर द्वारा हटा दिया गया था" + "this_reply_was_removed": "यह उत्तर बोर्ड मॉडरेटर द्वारा हटा दिया गया था", + "not_mod_of_any_board": "आप किसी बोर्ड के मॉड नहीं हैं।" } \ No newline at end of file diff --git a/public/translations/hu/default.json b/public/translations/hu/default.json index 92aed2c7..7affabb6 100644 --- a/public/translations/hu/default.json +++ b/public/translations/hu/default.json @@ -290,5 +290,6 @@ "this_thread_was_deleted": "Ez a szál törlésre került a szerzője által", "this_thread_was_removed": "Ezt a témát a fórum moderátorai eltávolították", "this_reply_was_deleted": "Ez a válasz törölve lett a szerzője által", - "this_reply_was_removed": "Ez a válasz törlésre került a fórum moderátorai által" + "this_reply_was_removed": "Ez a válasz törlésre került a fórum moderátorai által", + "not_mod_of_any_board": "Nem vagy moderátor egyetlen táblán sem." } \ No newline at end of file diff --git a/public/translations/id/default.json b/public/translations/id/default.json index 05979034..65240c4c 100644 --- a/public/translations/id/default.json +++ b/public/translations/id/default.json @@ -290,5 +290,6 @@ "this_thread_was_deleted": "Thread ini dihapus oleh penulisnya", "this_thread_was_removed": "Thread ini dihapus oleh moderator papan", "this_reply_was_deleted": "Balasan ini dihapus oleh penulisnya", - "this_reply_was_removed": "Balasan ini dihapus oleh moderator papan" + "this_reply_was_removed": "Balasan ini dihapus oleh moderator papan", + "not_mod_of_any_board": "Anda bukan mod di papan manapun." } \ No newline at end of file diff --git a/public/translations/it/default.json b/public/translations/it/default.json index 86c288be..4352987e 100644 --- a/public/translations/it/default.json +++ b/public/translations/it/default.json @@ -290,5 +290,6 @@ "this_thread_was_deleted": "Questo thread è stato eliminato dal suo autore", "this_thread_was_removed": "Questo thread è stato rimosso dai moderatori del board", "this_reply_was_deleted": "Questa risposta è stata eliminata dal suo autore", - "this_reply_was_removed": "Questa risposta è stata rimossa dai moderatori del forum" + "this_reply_was_removed": "Questa risposta è stata rimossa dai moderatori del forum", + "not_mod_of_any_board": "Non sei un mod di nessuna board." } \ No newline at end of file diff --git a/public/translations/ja/default.json b/public/translations/ja/default.json index 04fcf53d..1b225aea 100644 --- a/public/translations/ja/default.json +++ b/public/translations/ja/default.json @@ -290,5 +290,6 @@ "this_thread_was_deleted": "このスレッドは著者によって削除されました", "this_thread_was_removed": "このスレッドはボードのモデレーターによって削除されました", "this_reply_was_deleted": "この返信はその著者によって削除されました", - "this_reply_was_removed": "この返信は掲示板のモデレーターによって削除されました" + "this_reply_was_removed": "この返信は掲示板のモデレーターによって削除されました", + "not_mod_of_any_board": "あなたはどのボードのモデレーターでもありません。" } \ No newline at end of file diff --git a/public/translations/ko/default.json b/public/translations/ko/default.json index 7fa4ca03..cabe38ac 100644 --- a/public/translations/ko/default.json +++ b/public/translations/ko/default.json @@ -290,5 +290,6 @@ "this_thread_was_deleted": "이 스레드는 작성자에 의해 삭제되었습니다", "this_thread_was_removed": "이 스레드는 보드 관리자에 의해 제거되었습니다", "this_reply_was_deleted": "이 답글은 작성자에 의해 삭제되었습니다", - "this_reply_was_removed": "이 답글은 게시판 관리자에 의해 삭제되었습니다" + "this_reply_was_removed": "이 답글은 게시판 관리자에 의해 삭제되었습니다", + "not_mod_of_any_board": "당신은 어떤 게시판의 관리자도 아닙니다." } \ No newline at end of file diff --git a/public/translations/mr/default.json b/public/translations/mr/default.json index e9dc83d9..e1fb115b 100644 --- a/public/translations/mr/default.json +++ b/public/translations/mr/default.json @@ -290,5 +290,6 @@ "this_thread_was_deleted": "हा धागा त्याच्या लेखकाने हटविला", "this_thread_was_removed": "हे थ्रेड बोर्ड मध्यमाने काढले गेले आहे", "this_reply_was_deleted": "हा प्रतिसाद त्याच्या लेखकाने हटवला आहे", - "this_reply_was_removed": "या उत्तराला बोर्ड मॉडरेटरने काढले आहे" + "this_reply_was_removed": "या उत्तराला बोर्ड मॉडरेटरने काढले आहे", + "not_mod_of_any_board": "तुम्ही कोणत्याही बोर्डचे मॉड नाहीत." } \ No newline at end of file diff --git a/public/translations/nl/default.json b/public/translations/nl/default.json index 9ea19057..3a8ceb86 100644 --- a/public/translations/nl/default.json +++ b/public/translations/nl/default.json @@ -290,5 +290,6 @@ "this_thread_was_deleted": "Dit draadje is verwijderd door de auteur", "this_thread_was_removed": "Deze thread werd verwijderd door boardmoderators", "this_reply_was_deleted": "Dit antwoord werd verwijderd door de auteur", - "this_reply_was_removed": "Dit antwoord is verwijderd door de forum moderators" + "this_reply_was_removed": "Dit antwoord is verwijderd door de forum moderators", + "not_mod_of_any_board": "Je bent geen mod van een bord." } \ No newline at end of file diff --git a/public/translations/no/default.json b/public/translations/no/default.json index 7c35f71e..a9f98e2f 100644 --- a/public/translations/no/default.json +++ b/public/translations/no/default.json @@ -290,5 +290,6 @@ "this_thread_was_deleted": "Denne tråden ble slettet av forfatteren", "this_thread_was_removed": "Denne tråden ble fjernet av boardmoderatorer", "this_reply_was_deleted": "Dette svaret ble slettet av forfatteren", - "this_reply_was_removed": "Dette svaret ble fjernet av forummoderatorer" + "this_reply_was_removed": "Dette svaret ble fjernet av forummoderatorer", + "not_mod_of_any_board": "Du er ikke moderator på noen brett." } \ No newline at end of file diff --git a/public/translations/pl/default.json b/public/translations/pl/default.json index 9176469c..d3d35c42 100644 --- a/public/translations/pl/default.json +++ b/public/translations/pl/default.json @@ -290,5 +290,6 @@ "this_thread_was_deleted": "Wątek ten został usunięty przez jego autora", "this_thread_was_removed": "Wątek został usunięty przez moderatorów forum", "this_reply_was_deleted": "Ta odpowiedź została usunięta przez autora", - "this_reply_was_removed": "Ta odpowiedź została usunięta przez moderatorów forum" + "this_reply_was_removed": "Ta odpowiedź została usunięta przez moderatorów forum", + "not_mod_of_any_board": "Nie jesteś moderatorem żadnej tablicy." } \ No newline at end of file diff --git a/public/translations/pt/default.json b/public/translations/pt/default.json index 925cb32a..dc6c0523 100644 --- a/public/translations/pt/default.json +++ b/public/translations/pt/default.json @@ -290,5 +290,6 @@ "this_thread_was_deleted": "Este tópico foi excluído pelo seu autor", "this_thread_was_removed": "Este tópico foi removido pelos moderadores do fórum", "this_reply_was_deleted": "Esta resposta foi excluída pelo autor", - "this_reply_was_removed": "Esta resposta foi removida pelos moderadores do fórum" + "this_reply_was_removed": "Esta resposta foi removida pelos moderadores do fórum", + "not_mod_of_any_board": "Você não é um moderador de nenhum quadro." } \ No newline at end of file diff --git a/public/translations/ro/default.json b/public/translations/ro/default.json index a930eee8..456f1e4e 100644 --- a/public/translations/ro/default.json +++ b/public/translations/ro/default.json @@ -290,5 +290,6 @@ "this_thread_was_deleted": "Acest thread a fost șters de autorul său", "this_thread_was_removed": "Acest thread a fost eliminat de moderatorii board-ului", "this_reply_was_deleted": "Acest răspuns a fost șters de autorul său", - "this_reply_was_removed": "Acest răspuns a fost eliminat de moderatorii forumului" + "this_reply_was_removed": "Acest răspuns a fost eliminat de moderatorii forumului", + "not_mod_of_any_board": "Nu ești moderator pe niciun tablou." } \ No newline at end of file diff --git a/public/translations/ru/default.json b/public/translations/ru/default.json index 2fff8406..fcec4b16 100644 --- a/public/translations/ru/default.json +++ b/public/translations/ru/default.json @@ -290,5 +290,6 @@ "this_thread_was_deleted": "Эта тема была удалена её автором", "this_thread_was_removed": "Эта тема была удалена модераторами форума", "this_reply_was_deleted": "Этот ответ был удален автором", - "this_reply_was_removed": "Этот ответ был удален модераторами форума" + "this_reply_was_removed": "Этот ответ был удален модераторами форума", + "not_mod_of_any_board": "Вы не модератор ни одной доски." } \ No newline at end of file diff --git a/public/translations/sq/default.json b/public/translations/sq/default.json index c665db34..3dfd4993 100644 --- a/public/translations/sq/default.json +++ b/public/translations/sq/default.json @@ -290,5 +290,6 @@ "this_thread_was_deleted": "Ky thread u fshi nga autori i tij", "this_thread_was_removed": "Ky thread u hoq nga moderatorët e bordit", "this_reply_was_deleted": "Ky përgjigje u fshi nga autori i saj", - "this_reply_was_removed": "Ky përgjigje u hoq nga moderatorët e forumit" + "this_reply_was_removed": "Ky përgjigje u hoq nga moderatorët e forumit", + "not_mod_of_any_board": "Nuk jeni mod në asnjë bord." } \ No newline at end of file diff --git a/public/translations/sv/default.json b/public/translations/sv/default.json index 4fade928..f2f34930 100644 --- a/public/translations/sv/default.json +++ b/public/translations/sv/default.json @@ -290,5 +290,6 @@ "this_thread_was_deleted": "Denna tråd raderades av dess författare", "this_thread_was_removed": "Denna tråd togs bort av forumets moderatorer", "this_reply_was_deleted": "Detta svar togs bort av författaren", - "this_reply_was_removed": "Detta svar togs bort av forumets moderatorer" + "this_reply_was_removed": "Detta svar togs bort av forumets moderatorer", + "not_mod_of_any_board": "Du är inte moderator på någon tavla." } \ No newline at end of file diff --git a/public/translations/te/default.json b/public/translations/te/default.json index 71ee7ec0..b8cf78ec 100644 --- a/public/translations/te/default.json +++ b/public/translations/te/default.json @@ -290,5 +290,6 @@ "this_thread_was_deleted": "ఈ థ్రెడ్‌ను దాని రచయిత తొలగించారు", "this_thread_was_removed": "ఈ థ్రెడ్ బోర్డ్ మోడరేటర్ల ద్వారా తీసివేయబడింది", "this_reply_was_deleted": "ఈ స్పందనను దాని రచయిత తొలగించారు", - "this_reply_was_removed": "ఈ స్పందన బోర్డ్ మోడరేటర్లచే తొలగించబడింది" + "this_reply_was_removed": "ఈ స్పందన బోర్డ్ మోడరేటర్లచే తొలగించబడింది", + "not_mod_of_any_board": "మీరు ఎటువంటి బోర్డుకు మోడ్ కంటే లేరు." } \ No newline at end of file diff --git a/public/translations/th/default.json b/public/translations/th/default.json index 8b073ac1..a91107c7 100644 --- a/public/translations/th/default.json +++ b/public/translations/th/default.json @@ -290,5 +290,6 @@ "this_thread_was_deleted": "กระทู้นี้ถูกลบโดยผู้แต่ง", "this_thread_was_removed": "กระทู้นี้ถูกลบโดยผู้ดูแลบอร์ด", "this_reply_was_deleted": "การตอบกลับนี้ถูกลบโดยผู้แต่ง", - "this_reply_was_removed": "คำตอบนี้ถูกลบโดยผู้ดูแลบอร์ด" + "this_reply_was_removed": "คำตอบนี้ถูกลบโดยผู้ดูแลบอร์ด", + "not_mod_of_any_board": "คุณไม่ใช่ผู้ดูแลบอร์ดใดๆ" } \ No newline at end of file diff --git a/public/translations/tr/default.json b/public/translations/tr/default.json index 0cfc9d77..1b338343 100644 --- a/public/translations/tr/default.json +++ b/public/translations/tr/default.json @@ -290,5 +290,6 @@ "this_thread_was_deleted": "Bu başlık, yazarının tarafından silindi", "this_thread_was_removed": "Bu konu, board moderatörleri tarafından kaldırıldı", "this_reply_was_deleted": "Bu yanıt, yazar tarafından silindi", - "this_reply_was_removed": "Bu yanıt, forum moderatörleri tarafından kaldırıldı" + "this_reply_was_removed": "Bu yanıt, forum moderatörleri tarafından kaldırıldı", + "not_mod_of_any_board": "Hiçbir tahtanın moderatörü değilsiniz." } \ No newline at end of file diff --git a/public/translations/uk/default.json b/public/translations/uk/default.json index 78e25446..f2849a7b 100644 --- a/public/translations/uk/default.json +++ b/public/translations/uk/default.json @@ -290,5 +290,6 @@ "this_thread_was_deleted": "Цю тему видалив її автор", "this_thread_was_removed": "Цю тему було видалено модераторами форуму", "this_reply_was_deleted": "Цю відповідь було видалено її автором", - "this_reply_was_removed": "Цю відповідь було видалено модераторами форуму" + "this_reply_was_removed": "Цю відповідь було видалено модераторами форуму", + "not_mod_of_any_board": "Ви не модератор жодної дошки." } \ No newline at end of file diff --git a/public/translations/ur/default.json b/public/translations/ur/default.json index 6344a794..8053751e 100644 --- a/public/translations/ur/default.json +++ b/public/translations/ur/default.json @@ -290,5 +290,6 @@ "this_thread_was_deleted": "اس تھریڈ کو اس کے مصنف نے حذف کیا", "this_thread_was_removed": "اس تھریڈ کو بورڈ کے موڈریٹرز نے ہٹا دیا ہے", "this_reply_was_deleted": "اس جواب کو اس کے مصنف نے حذف کر دیا تھا", - "this_reply_was_removed": "اس جواب کو بورڈ کے منتظمین نے حذف کر دیا ہے" + "this_reply_was_removed": "اس جواب کو بورڈ کے منتظمین نے حذف کر دیا ہے", + "not_mod_of_any_board": "آپ کسی بورڈ کے موڈ نہیں ہیں۔" } \ No newline at end of file diff --git a/public/translations/vi/default.json b/public/translations/vi/default.json index d40bf706..89d4e137 100644 --- a/public/translations/vi/default.json +++ b/public/translations/vi/default.json @@ -290,5 +290,6 @@ "this_thread_was_deleted": "Chủ đề này đã bị tác giả của nó xóa", "this_thread_was_removed": "Chủ đề này đã bị các quản trị viên diễn đàn xóa", "this_reply_was_deleted": "Câu trả lời này đã bị tác giả của nó xóa", - "this_reply_was_removed": "Phản hồi này đã bị xóa bởi các quản trị viên diễn đàn" + "this_reply_was_removed": "Phản hồi này đã bị xóa bởi các quản trị viên diễn đàn", + "not_mod_of_any_board": "Bạn không phải là quản trị viên của bất kỳ bảng nào." } \ No newline at end of file diff --git a/public/translations/zh/default.json b/public/translations/zh/default.json index 3de66d2e..e595957e 100644 --- a/public/translations/zh/default.json +++ b/public/translations/zh/default.json @@ -290,5 +290,6 @@ "this_thread_was_deleted": "该线程已被其作者删除", "this_thread_was_removed": "此帖子已被论坛版主删除", "this_reply_was_deleted": "该回复已被其作者删除", - "this_reply_was_removed": "该回复已被版主删除" + "this_reply_was_removed": "该回复已被版主删除", + "not_mod_of_any_board": "您不是任何板块的管理员。" } \ No newline at end of file diff --git a/src/app.tsx b/src/app.tsx index 54b8333e..3843ee3b 100644 --- a/src/app.tsx +++ b/src/app.tsx @@ -3,6 +3,8 @@ import { Outlet, Route, Routes, useLocation, useParams } from 'react-router-dom' import { useAccountComment } from '@plebbit/plebbit-react-hooks'; import { initSnow, removeSnow } from './lib/snow'; import { isAllView, isSubscriptionsView } from './lib/utils/view-utils'; +import useReplyModalStore from './stores/use-reply-modal-store'; +import useSpecialThemeStore from './stores/use-special-theme-store'; import useIsMobile from './hooks/use-is-mobile'; import useTheme from './hooks/use-theme'; import styles from './app.module.css'; @@ -16,10 +18,11 @@ import Post from './views/post'; import { DesktopBoardButtons, MobileBoardButtons } from './components/board-buttons'; import BoardHeader from './components/board-header'; import ChallengeModal from './components/challenge-modal'; +import ReplyModal from './components/reply-modal'; import PostForm from './components/post-form'; import SubplebbitStats from './components/subplebbit-stats'; import TopBar from './components/topbar'; -import useSpecialThemeStore from './stores/use-special-theme-store'; +import SettingsModal from './components/settings-modal'; const BoardLayout = () => { const { accountCommentIndex, subplebbitAddress } = useParams(); @@ -87,9 +90,25 @@ const GlobalLayout = () => { } }, [theme]); + const { activeCid, threadCid, subplebbitAddress, closeModal, showReplyModal, scrollY } = useReplyModalStore(); + + const location = useLocation(); + const isInSettingsView = location.pathname.endsWith('/settings'); + return ( <> + {activeCid && threadCid && subplebbitAddress && ( + + )} + {isInSettingsView && } ); @@ -128,6 +147,11 @@ const App = () => { } /> } /> + } /> + } /> + } /> + } /> + } /> } /> diff --git a/src/components/board-buttons/board-buttons.tsx b/src/components/board-buttons/board-buttons.tsx index 815aa0ad..5efa3ec5 100644 --- a/src/components/board-buttons/board-buttons.tsx +++ b/src/components/board-buttons/board-buttons.tsx @@ -92,7 +92,7 @@ const UpdateButton = () => { const { t } = useTranslation(); const isMobile = useIsMobile(); - const handleUpdate = () => { + const handleManualUpdate = () => { window.alert('Manual updates are not available yet. Posts update automatically every ~2 minutes.'); }; @@ -100,11 +100,11 @@ const UpdateButton = () => { <> {/* TODO: Implement update button once available in API */} {isMobile ? ( - ) : ( - )} @@ -116,17 +116,21 @@ const AutoButton = () => { const { t } = useTranslation(); const isMobile = useIsMobile(); + const handleManualUpdate = () => { + window.alert('Manual updates are not available yet. Posts update automatically every ~2 minutes.'); + }; + return ( <> {isMobile ? ( - ) : ( -