From ae1e259bab7e2ab656738b62523700e8e0d63242 Mon Sep 17 00:00:00 2001 From: HF Date: Fri, 12 Aug 2022 20:51:17 +0200 Subject: [PATCH] use react portals to move Embeds out of ChatMessages into parent add barebone for window route --- i18n/template-ssr.pot | 72 +++--- i18n/template.pot | 430 ++++++++++++++++----------------- src/components/ChatMessage.jsx | 10 +- src/components/Markdown.jsx | 4 +- src/components/MdLink.jsx | 13 +- src/routes/index.js | 27 ++- src/ssr/Win.jsx | 51 ++++ src/win.js | 5 + webpack.config.client.babel.js | 2 + 9 files changed, 353 insertions(+), 261 deletions(-) create mode 100644 src/ssr/Win.jsx create mode 100644 src/win.js diff --git a/i18n/template-ssr.pot b/i18n/template-ssr.pot index 2a02dfe..4c143ed 100644 --- a/i18n/template-ssr.pot +++ b/i18n/template-ssr.pot @@ -28,40 +28,40 @@ msgstr "" msgid "You don't have access to this channel" msgstr "" -#: src/core/ChatProvider.js:431 +#: src/core/ChatProvider.js:433 msgid "Your mail has to be verified in order to chat" msgstr "" -#: src/core/ChatProvider.js:436 +#: src/core/ChatProvider.js:438 msgid "You are permanently muted, join our guilded to apppeal the mute" msgstr "" -#: src/core/ChatProvider.js:441 +#: src/core/ChatProvider.js:443 #, javascript-format msgid "You are muted for another ${ timeMin } minutes" msgstr "" -#: src/core/ChatProvider.js:443 +#: src/core/ChatProvider.js:445 msgid "You are muted for another ${ muted } seconds" msgstr "" -#: src/core/ChatProvider.js:451 +#: src/core/ChatProvider.js:453 msgid "Ow no! Spam protection decided to mute you" msgstr "" -#: src/core/ChatProvider.js:462 +#: src/core/ChatProvider.js:464 msgid "You can't send a message this long :(" msgstr "" -#: src/core/ChatProvider.js:466 +#: src/core/ChatProvider.js:468 msgid "Please use int channel" msgstr "" -#: src/core/ChatProvider.js:472 +#: src/core/ChatProvider.js:475 msgid "Your country is temporary muted from this chat channel" msgstr "" -#: src/core/ChatProvider.js:480 +#: src/core/ChatProvider.js:483 msgid "Stop flooding." msgstr "" @@ -236,33 +236,6 @@ msgstr "" msgid "Submit" msgstr "" -#: src/routes/api/captcha.js:20 -msgid "No captcha text given" -msgstr "" - -#: src/routes/api/captcha.js:25 -msgid "No captcha id given" -msgstr "" - -#: src/routes/api/auth/register.js:54 -#: src/routes/api/captcha.js:44 -msgid "You took too long, try again." -msgstr "" - -#: src/routes/api/auth/register.js:57 -#: src/routes/api/captcha.js:50 -msgid "You failed your captcha" -msgstr "" - -#: src/routes/api/auth/register.js:60 -#: src/routes/api/captcha.js:56 -msgid "Unknown Captcha Error" -msgstr "" - -#: src/routes/api/captcha.js:63 -msgid "Server error occured" -msgstr "" - #: src/utils/validation.js:17 msgid "Email can't be empty." msgstr "" @@ -311,6 +284,33 @@ msgstr "" msgid "Password must be shorter than 60 characters." msgstr "" +#: src/routes/api/captcha.js:20 +msgid "No captcha text given" +msgstr "" + +#: src/routes/api/captcha.js:25 +msgid "No captcha id given" +msgstr "" + +#: src/routes/api/auth/register.js:54 +#: src/routes/api/captcha.js:44 +msgid "You took too long, try again." +msgstr "" + +#: src/routes/api/auth/register.js:57 +#: src/routes/api/captcha.js:50 +msgid "You failed your captcha" +msgstr "" + +#: src/routes/api/auth/register.js:60 +#: src/routes/api/captcha.js:56 +msgid "Unknown Captcha Error" +msgstr "" + +#: src/routes/api/captcha.js:63 +msgid "Server error occured" +msgstr "" + #: src/routes/api/modtools.js:53 msgid "You are not logged in" msgstr "" diff --git a/i18n/template.pot b/i18n/template.pot index 4575666..21d7a4f 100644 --- a/i18n/template.pot +++ b/i18n/template.pot @@ -54,113 +54,109 @@ msgstr "" msgid "Didn't get an answer from pixelplanet. Maybe try to refresh?" msgstr "" -#: src/ui/placePixel.js:195 +#: src/ui/placePixel.js:196 msgid "Invalid Canvas" msgstr "" -#: src/ui/placePixel.js:196 +#: src/ui/placePixel.js:197 msgid "This canvas doesn't exist" msgstr "" -#: src/ui/placePixel.js:199 -#: src/ui/placePixel.js:203 -#: src/ui/placePixel.js:207 +#: src/ui/placePixel.js:200 +#: src/ui/placePixel.js:204 +#: src/ui/placePixel.js:208 msgid "Invalid Coordinates" msgstr "" -#: src/ui/placePixel.js:200 +#: src/ui/placePixel.js:201 msgid "x out of bounds" msgstr "" -#: src/ui/placePixel.js:204 +#: src/ui/placePixel.js:205 msgid "y out of bounds" msgstr "" -#: src/ui/placePixel.js:208 +#: src/ui/placePixel.js:209 msgid "z out of bounds" msgstr "" -#: src/ui/placePixel.js:211 +#: src/ui/placePixel.js:212 msgid "Wrong Color" msgstr "" -#: src/ui/placePixel.js:212 +#: src/ui/placePixel.js:213 msgid "Invalid color selected" msgstr "" -#: src/ui/placePixel.js:215 +#: src/ui/placePixel.js:216 msgid "Just for registered Users" msgstr "" -#: src/ui/placePixel.js:216 +#: src/ui/placePixel.js:217 msgid "You have to be logged in to place on this canvas" msgstr "" -#: src/ui/placePixel.js:219 +#: src/ui/placePixel.js:220 msgid "Place more :)" msgstr "" -#: src/ui/placePixel.js:221 +#: src/ui/placePixel.js:222 msgid "You can not access this canvas yet. You need to place more pixels" msgstr "" -#: src/ui/placePixel.js:224 +#: src/ui/placePixel.js:225 msgid "Pixel protected!" msgstr "" -#: src/ui/placePixel.js:232 +#: src/ui/placePixel.js:233 msgid "Please prove that you are human" msgstr "" -#: src/ui/placePixel.js:236 +#: src/ui/placePixel.js:237 msgid "No Proxies Allowed :(" msgstr "" -#: src/ui/placePixel.js:237 +#: src/ui/placePixel.js:238 msgid "You are using a Proxy." msgstr "" -#: src/ui/placePixel.js:240 +#: src/ui/placePixel.js:241 msgid "Not allowed" msgstr "" -#: src/ui/placePixel.js:241 +#: src/ui/placePixel.js:242 msgid "Just the Top10 of yesterday can place here" msgstr "" -#: src/ui/placePixel.js:244 +#: src/ui/placePixel.js:245 msgid "You are weird" msgstr "" -#: src/ui/placePixel.js:246 +#: src/ui/placePixel.js:247 msgid "Server got confused by your pixels. Are you playing on multiple devices?" msgstr "" -#: src/ui/placePixel.js:249 +#: src/ui/placePixel.js:250 msgid "Banned" msgstr "" -#: src/ui/placePixel.js:250 -msgid "ban" -msgstr "" - -#: src/ui/placePixel.js:253 +#: src/ui/placePixel.js:254 msgid "Range Banned" msgstr "" -#: src/ui/placePixel.js:254 +#: src/ui/placePixel.js:255 msgid "Your Internet Provider is banned from playing this game" msgstr "" -#: src/ui/placePixel.js:257 +#: src/ui/placePixel.js:258 msgid "Weird" msgstr "" -#: src/ui/placePixel.js:258 +#: src/ui/placePixel.js:259 msgid "Couldn't set Pixel" msgstr "" -#: src/ui/placePixel.js:263 +#: src/ui/placePixel.js:264 #, javascript-format msgid "Error ${ retCode }" msgstr "" @@ -173,28 +169,28 @@ msgstr "" msgid "Can't render 3D canvas, do you have WebGL2 disabled?" msgstr "" -#: src/components/BanInfo.jsx:135 +#: src/components/BanInfo.jsx:137 #: src/store/actions/index.js:16 msgid "OK" msgstr "" -#: src/store/actions/index.js:626 +#: src/store/actions/index.js:663 msgid "Register New Account" msgstr "" -#: src/store/actions/index.js:633 +#: src/store/actions/index.js:670 msgid "Restore my Password" msgstr "" -#: src/store/actions/index.js:640 +#: src/store/actions/index.js:677 msgid "Welcome to PixelPlanet.fun" msgstr "" -#: src/store/actions/index.js:646 +#: src/store/actions/index.js:683 msgid "Look at past Canvases" msgstr "" -#: src/components/Converter.jsx:559 +#: src/components/Converter.jsx:561 #: src/components/CoordinatesBox.jsx:31 #: src/components/ModWatchtools.jsx:355 msgid "Copy to Clipboard" @@ -225,11 +221,6 @@ msgstr "" msgid "Restore" msgstr "" -#: src/components/buttons/CanvasSwitchButton.jsx:22 -#: src/components/windows/index.js:19 -msgid "Canvas Selection" -msgstr "" - #: src/store/actions/fetch.js:39 msgid "You made too many requests" msgstr "" @@ -275,6 +266,19 @@ msgstr "" msgid "Open Menu" msgstr "" +#: src/components/buttons/CanvasSwitchButton.jsx:22 +#: src/components/windows/index.js:19 +msgid "Canvas Selection" +msgstr "" + +#: src/components/HistorySelect.jsx:144 +msgid "Loading" +msgstr "" + +#: src/components/HistorySelect.jsx:145 +msgid "Select Date above" +msgstr "" + #: src/components/Window.jsx:118 msgid "Clone" msgstr "" @@ -291,12 +295,16 @@ msgstr "" msgid "Resize" msgstr "" -#: src/components/HistorySelect.jsx:143 -msgid "Loading" +#: src/components/buttons/GlobeButton.jsx:34 +msgid "Globe View" msgstr "" -#: src/components/HistorySelect.jsx:144 -msgid "Select Date above" +#: src/components/buttons/PalselButton.jsx:30 +msgid "Close Palette" +msgstr "" + +#: src/components/buttons/PalselButton.jsx:30 +msgid "Open Palette" msgstr "" #: src/components/BanInfo.jsx:76 @@ -319,18 +327,6 @@ msgstr "" msgid "Make Screenshot" msgstr "" -#: src/components/buttons/GlobeButton.jsx:34 -msgid "Globe View" -msgstr "" - -#: src/components/buttons/PalselButton.jsx:30 -msgid "Close Palette" -msgstr "" - -#: src/components/buttons/PalselButton.jsx:30 -msgid "Open Palette" -msgstr "" - #: src/components/windows/index.js:16 msgid "Registration" msgstr "" @@ -347,6 +343,14 @@ msgstr "" msgid "Canvas Archive" msgstr "" +#: src/components/BanInfo.jsx:67 +msgid "You are banned. You think it is unjustifed? Check out the " +msgstr "" + +#: src/components/BanInfo.jsx:77 +msgid " on how to appeal." +msgstr "" + #: src/components/BanInfo.jsx:81 #: src/components/Captcha.jsx:77 #: src/components/ChangeMail.jsx:72 @@ -360,28 +364,6 @@ msgstr "" msgid "Error" msgstr "" -#: src/components/ChangeMail.jsx:93 -#: src/components/ChangeName.jsx:70 -#: src/components/ChangePassword.jsx:115 -#: src/components/DeleteAccount.jsx:68 -#: src/components/GlobalCaptcha.jsx:48 -#: src/components/windows/ForgotPassword.jsx:88 -#: src/components/windows/Register.jsx:130 -msgid "Cancel" -msgstr "" - -#: src/components/GlobalCaptcha.jsx:55 -msgid "Send" -msgstr "" - -#: src/components/BanInfo.jsx:67 -msgid "You are banned. You think it is unjustifed? Check out the " -msgstr "" - -#: src/components/BanInfo.jsx:77 -msgid " on how to appeal." -msgstr "" - #: src/components/BanInfo.jsx:86 #: src/components/ModIIDtools.jsx:72 msgid "Reason" @@ -412,10 +394,40 @@ msgstr "" msgid "Now that you have seen this message, you are no longer banned." msgstr "" -#: src/components/BanInfo.jsx:125 +#: src/components/BanInfo.jsx:128 msgid "Why?" msgstr "" +#: src/components/ChangeMail.jsx:93 +#: src/components/ChangeName.jsx:70 +#: src/components/ChangePassword.jsx:115 +#: src/components/DeleteAccount.jsx:68 +#: src/components/GlobalCaptcha.jsx:47 +#: src/components/windows/ForgotPassword.jsx:88 +#: src/components/windows/Register.jsx:130 +msgid "Cancel" +msgstr "" + +#: src/components/GlobalCaptcha.jsx:53 +msgid "Send" +msgstr "" + +#: src/components/contextmenus/UserContextMenu.jsx:56 +msgid "Ping" +msgstr "" + +#: src/components/contextmenus/UserContextMenu.jsx:83 +msgid "DM" +msgstr "" + +#: src/components/contextmenus/UserContextMenu.jsx:93 +msgid "Block" +msgstr "" + +#: src/components/contextmenus/ChannelContextMenu.jsx:54 +msgid "Mute" +msgstr "" + #: src/components/windows/Help.jsx:42 msgid "Place color pixels on a large canvas with other players online!" msgstr "" @@ -653,7 +665,7 @@ msgstr "" msgid "For when you are playing on a potato." msgstr "" -#: src/components/Converter.jsx:374 +#: src/components/Converter.jsx:376 #: src/components/windows/Settings.jsx:196 msgid "Light Grid" msgstr "" @@ -682,27 +694,28 @@ msgstr "" msgid "Select Language" msgstr "" -#: src/components/windows/UserArea.jsx:36 +#: src/components/windows/UserArea.jsx:29 +#: src/components/windows/UserArea.jsx:48 msgid "Profile" msgstr "" -#: src/components/windows/UserArea.jsx:39 +#: src/components/windows/UserArea.jsx:51 msgid "Ranking" msgstr "" -#: src/components/windows/UserArea.jsx:42 +#: src/components/windows/UserArea.jsx:54 msgid "Converter" msgstr "" -#: src/components/windows/UserArea.jsx:48 +#: src/components/windows/UserArea.jsx:60 msgid "Modtools" msgstr "" -#: src/components/windows/UserArea.jsx:49 +#: src/components/windows/UserArea.jsx:61 msgid "Loading..." msgstr "" -#: src/components/windows/UserArea.jsx:56 +#: src/components/windows/UserArea.jsx:68 msgid "Consider joining us on Guilded:" msgstr "" @@ -740,10 +753,10 @@ msgstr "" #: src/components/Admintools.jsx:152 #: src/components/Admintools.jsx:236 -#: src/components/ModCanvastools.jsx:313 -#: src/components/ModCanvastools.jsx:394 -#: src/components/ModCanvastools.jsx:469 -#: src/components/ModCanvastools.jsx:561 +#: src/components/ModCanvastools.jsx:314 +#: src/components/ModCanvastools.jsx:396 +#: src/components/ModCanvastools.jsx:471 +#: src/components/ModCanvastools.jsx:564 #: src/components/ModIIDtools.jsx:134 #: src/components/windows/ForgotPassword.jsx:86 #: src/components/windows/Register.jsx:124 @@ -794,19 +807,19 @@ msgid "" "how the canvas was at that time." msgstr "" -#: src/components/windows/Chat.jsx:134 +#: src/components/windows/Chat.jsx:146 msgid "Channel settings" msgstr "" -#: src/components/windows/Chat.jsx:151 +#: src/components/windows/Chat.jsx:163 msgid "Start chatting here" msgstr "" -#: src/components/windows/Chat.jsx:193 +#: src/components/windows/Chat.jsx:203 msgid "Chat here" msgstr "" -#: src/components/windows/Chat.jsx:215 +#: src/components/windows/Chat.jsx:225 msgid "You must be logged in to chat" msgstr "" @@ -818,22 +831,6 @@ msgstr "" msgid "Enter your mail address and we will send you a new password:" msgstr "" -#: src/components/contextmenus/UserContextMenu.jsx:56 -msgid "Ping" -msgstr "" - -#: src/components/contextmenus/UserContextMenu.jsx:81 -msgid "DM" -msgstr "" - -#: src/components/contextmenus/UserContextMenu.jsx:91 -msgid "Block" -msgstr "" - -#: src/components/contextmenus/ChannelContextMenu.jsx:54 -msgid "Mute" -msgstr "" - #: src/components/Captcha.jsx:50 #: src/components/Captcha.jsx:105 msgid "Could not load captcha" @@ -999,15 +996,15 @@ msgstr "" msgid "Social Settings" msgstr "" -#: src/components/Rankings.jsx:27 +#: src/components/Rankings.jsx:31 msgid "Total" msgstr "" -#: src/components/Rankings.jsx:35 +#: src/components/Rankings.jsx:40 msgid "Daily" msgstr "" -#: src/components/Rankings.jsx:39 +#: src/components/Rankings.jsx:85 msgid "Ranking updates every 5 min. Daily rankings get reset at midnight UTC." msgstr "" @@ -1037,56 +1034,56 @@ msgstr "" msgid "Choose Strategy" msgstr "" -#: src/components/Converter.jsx:293 +#: src/components/Converter.jsx:294 msgid "Serpentine" msgstr "" -#: src/components/Converter.jsx:295 +#: src/components/Converter.jsx:296 msgid "Minimum Color Distance" msgstr "" -#: src/components/Converter.jsx:322 +#: src/components/Converter.jsx:323 msgid "Calculate like GIMP" msgstr "" -#: src/components/Converter.jsx:326 +#: src/components/Converter.jsx:327 msgid "Choose Color Mode" msgstr "" -#: src/components/Converter.jsx:354 +#: src/components/Converter.jsx:356 msgid "Add Grid (uncheck if you need a 1:1 template)" msgstr "" -#: src/components/Converter.jsx:376 -#: src/components/Converter.jsx:392 +#: src/components/Converter.jsx:378 +#: src/components/Converter.jsx:394 msgid "Offset" msgstr "" -#: src/components/Converter.jsx:421 +#: src/components/Converter.jsx:423 msgid "Scale Image" msgstr "" -#: src/components/Converter.jsx:432 +#: src/components/Converter.jsx:434 msgid "Width" msgstr "" -#: src/components/Converter.jsx:463 +#: src/components/Converter.jsx:465 msgid "Height" msgstr "" -#: src/components/Converter.jsx:502 +#: src/components/Converter.jsx:504 msgid "Keep Ratio" msgstr "" -#: src/components/Converter.jsx:515 +#: src/components/Converter.jsx:517 msgid "Anti Aliasing" msgstr "" -#: src/components/Converter.jsx:529 +#: src/components/Converter.jsx:531 msgid "Reset" msgstr "" -#: src/components/Converter.jsx:547 +#: src/components/Converter.jsx:549 msgid "Download Template" msgstr "" @@ -1143,6 +1140,70 @@ msgstr "" msgid "LogIn" msgstr "" +#: src/components/ChangePassword.jsx:21 +msgid "Passwords do not match." +msgstr "" + +#: src/components/ChangePassword.jsx:44 +msgid "Changed Password successfully." +msgstr "" + +#: src/components/ChangePassword.jsx:88 +msgid "Old Password" +msgstr "" + +#: src/components/ChangePassword.jsx:96 +msgid "New Password" +msgstr "" + +#: src/components/ChangePassword.jsx:103 +msgid "Confirm New Password" +msgstr "" + +#: src/components/UserMessages.jsx:28 +msgid "" +"Please verify your mail address or your account could get deleted after a " +"few days." +msgstr "" + +#: src/components/UserMessages.jsx:49 +msgid "A new verification mail is getting sent to you." +msgstr "" + +#: src/components/UserMessages.jsx:53 +msgid "Click here to request a new verification mail." +msgstr "" + +#: src/components/ChangeName.jsx:64 +msgid "New Username" +msgstr "" + +#: src/components/ChangeMail.jsx:59 +msgid "" +"Changed Mail successfully. We sent you a verification mail, " +"please verify your new mail address." +msgstr "" + +#: src/components/ChangeMail.jsx:87 +msgid "New Mail" +msgstr "" + +#: src/components/DeleteAccount.jsx:66 +msgid "Yes, Delete My Account!" +msgstr "" + +#: src/components/SocialSettings.jsx:37 +msgid "Block all Private Messages" +msgstr "" + +#: src/components/SocialSettings.jsx:55 +msgid "Unblock Users" +msgstr "" + +#: src/components/SocialSettings.jsx:80 +msgid "You have no users blocked" +msgstr "" + #: src/components/ModCanvastools.jsx:174 msgid "Build image on canvas." msgstr "" @@ -1188,51 +1249,51 @@ msgstr "" msgid "File" msgstr "" -#: src/components/ModCanvastools.jsx:278 +#: src/components/ModCanvastools.jsx:279 msgid "Coordinates in X_Y format:" msgstr "" -#: src/components/ModCanvastools.jsx:318 +#: src/components/ModCanvastools.jsx:319 msgid "Pixel Protection" msgstr "" -#: src/components/ModCanvastools.jsx:320 +#: src/components/ModCanvastools.jsx:321 msgid "" "Set protection of areas (if you need finer grained control, " "use protect with image upload and alpha layers)" msgstr "" -#: src/components/ModCanvastools.jsx:340 -#: src/components/ModCanvastools.jsx:415 -#: src/components/ModCanvastools.jsx:499 +#: src/components/ModCanvastools.jsx:342 +#: src/components/ModCanvastools.jsx:417 +#: src/components/ModCanvastools.jsx:502 #: src/components/ModWatchtools.jsx:168 msgid "Top-left corner" msgstr "" -#: src/components/ModCanvastools.jsx:358 -#: src/components/ModCanvastools.jsx:433 -#: src/components/ModCanvastools.jsx:517 +#: src/components/ModCanvastools.jsx:360 +#: src/components/ModCanvastools.jsx:435 +#: src/components/ModCanvastools.jsx:520 #: src/components/ModWatchtools.jsx:186 msgid "Bottom-right corner" msgstr "" -#: src/components/ModCanvastools.jsx:400 +#: src/components/ModCanvastools.jsx:402 msgid "Rollback to Date" msgstr "" -#: src/components/ModCanvastools.jsx:402 +#: src/components/ModCanvastools.jsx:404 msgid "Rollback an area of the canvas to a set date (00:00 UTC)" msgstr "" -#: src/components/ModCanvastools.jsx:475 +#: src/components/ModCanvastools.jsx:477 msgid "Canvas Cleaner" msgstr "" -#: src/components/ModCanvastools.jsx:477 +#: src/components/ModCanvastools.jsx:479 msgid "Apply a filter to clean trash in large canvas areas." msgstr "" -#: src/components/ModCanvastools.jsx:579 +#: src/components/ModCanvastools.jsx:582 msgid "Stop Cleaner" msgstr "" @@ -1268,23 +1329,6 @@ msgstr "" msgid "User Name" msgstr "" -#: src/components/ModIIDtools.jsx:19 -#: src/components/ModIIDtools.jsx:23 -msgid "You must enter an IID" -msgstr "" - -#: src/components/ModIIDtools.jsx:52 -msgid "IID Actions" -msgstr "" - -#: src/components/ModIIDtools.jsx:79 -msgid "Enter Reason" -msgstr "" - -#: src/components/ModIIDtools.jsx:96 -msgid "(0 = infinite)" -msgstr "" - #: src/components/ModWatchtools.jsx:45 msgid "Interval is invalid" msgstr "" @@ -1313,68 +1357,24 @@ msgstr "" msgid "Get Users" msgstr "" -#: src/components/UserMessages.jsx:28 -msgid "" -"Please verify your mail address or your account could get deleted after a " -"few days." +#: src/components/ModIIDtools.jsx:19 +msgid "You must enter a duration" msgstr "" -#: src/components/UserMessages.jsx:49 -msgid "A new verification mail is getting sent to you." +#: src/components/ModIIDtools.jsx:23 +msgid "You must enter an IID" msgstr "" -#: src/components/UserMessages.jsx:53 -msgid "Click here to request a new verification mail." +#: src/components/ModIIDtools.jsx:52 +msgid "IID Actions" msgstr "" -#: src/components/ChangeName.jsx:64 -msgid "New Username" +#: src/components/ModIIDtools.jsx:79 +msgid "Enter Reason" msgstr "" -#: src/components/ChangePassword.jsx:21 -msgid "Passwords do not match." -msgstr "" - -#: src/components/ChangePassword.jsx:44 -msgid "Changed Password successfully." -msgstr "" - -#: src/components/ChangePassword.jsx:88 -msgid "Old Password" -msgstr "" - -#: src/components/ChangePassword.jsx:96 -msgid "New Password" -msgstr "" - -#: src/components/ChangePassword.jsx:103 -msgid "Confirm New Password" -msgstr "" - -#: src/components/ChangeMail.jsx:59 -msgid "" -"Changed Mail successfully. We sent you a verification mail, " -"please verify your new mail address." -msgstr "" - -#: src/components/ChangeMail.jsx:87 -msgid "New Mail" -msgstr "" - -#: src/components/DeleteAccount.jsx:66 -msgid "Yes, Delete My Account!" -msgstr "" - -#: src/components/SocialSettings.jsx:37 -msgid "Block all Private Messages" -msgstr "" - -#: src/components/SocialSettings.jsx:55 -msgid "Unblock Users" -msgstr "" - -#: src/components/SocialSettings.jsx:79 -msgid "You have no users blocked" +#: src/components/ModIIDtools.jsx:96 +msgid "(0 = infinite)" msgstr "" #: src/components/windows/Help.jsx:15 diff --git a/src/components/ChatMessage.jsx b/src/components/ChatMessage.jsx index b36ab07..5a22d0f 100644 --- a/src/components/ChatMessage.jsx +++ b/src/components/ChatMessage.jsx @@ -1,4 +1,4 @@ -import React from 'react'; +import React, { useRef } from 'react'; import { useSelector, useDispatch } from 'react-redux'; import { showContextMenu } from '../store/actions'; @@ -23,6 +23,7 @@ function ChatMessage({ const isDarkMode = useSelector( (state) => state.gui.style.indexOf('dark') !== -1, ); + const refEmbed = useRef(null); const isInfo = (name === 'info'); const isEvent = (name === 'event'); @@ -43,7 +44,7 @@ function ChatMessage({
  • {(!isInfo && !isEvent) && ( -
    +
    )} -
    - +
    +
    +
  • ); } diff --git a/src/components/Markdown.jsx b/src/components/Markdown.jsx index dbedd12..3cc9748 100644 --- a/src/components/Markdown.jsx +++ b/src/components/Markdown.jsx @@ -7,7 +7,7 @@ import MdLink from './MdLink'; import MdMention from './MdMention'; // eslint-disable-next-line max-len -export const MarkdownParagraph = React.memo(({ pArray }) => pArray.map((part) => { +export const MarkdownParagraph = React.memo(({ pArray, refEmbed }) => pArray.map((part) => { if (!Array.isArray(part)) { return part; } @@ -42,7 +42,7 @@ export const MarkdownParagraph = React.memo(({ pArray }) => pArray.map((part) => case 'img': case 'l': { return ( - + ); } case '@': { diff --git a/src/components/MdLink.jsx b/src/components/MdLink.jsx index 3c2c734..15f1e64 100644 --- a/src/components/MdLink.jsx +++ b/src/components/MdLink.jsx @@ -4,6 +4,7 @@ * Links are assumed to start with protocol (http:// etc.) */ import React, { useState } from 'react'; +import ReactDOM from 'react-dom'; import { HiArrowsExpand, HiStop } from 'react-icons/hi'; import { getLinkDesc } from '../core/utils'; @@ -18,7 +19,7 @@ const titleAllowed = [ 't.me', ]; -const MdLink = ({ href, title }) => { +const MdLink = ({ href, title, refEmbed }) => { const [showEmbed, setShowEmbed] = useState(false); const desc = getLinkDesc(href); @@ -87,7 +88,15 @@ const MdLink = ({ href, title }) => { )} - {(showEmbed && embedAvailable) && } + {showEmbed && embedAvailable && ( + (refEmbed) + ? ReactDOM.createPortal( + , + refEmbed.current, + ) : ( + + ) + )} ); }; diff --git a/src/routes/index.js b/src/routes/index.js index 9304357..9b31cc8 100644 --- a/src/routes/index.js +++ b/src/routes/index.js @@ -19,6 +19,7 @@ import api from './api'; import assets from './assets.json'; // eslint-disable-line import/no-unresolved import { expressTTag } from '../core/ttag'; import generateGlobePage from '../ssr/Globe'; +import generateWinPage from '../ssr/Win'; import generateMainPage from '../ssr/Main'; import { MONTH } from '../core/constants'; @@ -105,7 +106,7 @@ const globeEtag = etag( assets.globe.js.join('_'), { weak: true }, ); -router.get('/globe', async (req, res) => { +router.get('/globe', (req, res) => { res.set({ 'Cache-Control': `private, max-age=${15 * 60}`, // seconds 'Content-Type': 'text/html; charset=utf-8', @@ -120,6 +121,28 @@ router.get('/globe', async (req, res) => { res.status(200).send(generateGlobePage(req.lang)); }); +// +// Windows (like chat pop-up etc.) +// ----------------------------------------------------------------------------- +const winEtag = etag( + assets.win.js, + { weak: true }, +); +router.get('/win', async (req, res) => { + res.set({ + 'Cache-Control': `private, max-age=${15 * 60}`, // seconds + 'Content-Type': 'text/html; charset=utf-8', + ETag: globeEtag, + }); + + if (req.headers['if-none-match'] === winEtag) { + res.status(304).end(); + return; + } + + res.status(200).send(generateWinPage(req.lang)); +}); + // // Main Page (react generated) // ----------------------------------------------------------------------------- @@ -128,7 +151,7 @@ const indexEtag = etag( { weak: true }, ); -router.get('/', async (req, res) => { +router.get('/', (req, res) => { res.set({ 'Cache-Control': `private, max-age=${15 * 60}`, // seconds 'Content-Type': 'text/html; charset=utf-8', diff --git a/src/ssr/Win.jsx b/src/ssr/Win.jsx new file mode 100644 index 0000000..5eda012 --- /dev/null +++ b/src/ssr/Win.jsx @@ -0,0 +1,51 @@ +/* + * create html for Window page + * + */ + +/* eslint-disable max-len */ + +import { getTTag } from '../core/ttag'; + +/* this will be set by webpack */ +// eslint-disable-next-line import/no-unresolved +import assets from './assets.json'; +import { ASSET_SERVER } from '../core/config'; + +/* + * generates string with html of globe page + * @param lang language code + * @return html of mainpage + */ +function generateWinPage(lang) { + const script = (assets[`win-${lang}`]) + ? assets[`win-${lang}`].js + : assets.win.js; + + const { t } = getTTag(lang); + + const html = ` + + + + + ${t`PixelPlanet.Fun Window`} + + + + + + + + + + + + `; + + return html; +} + +export default generateWinPage; diff --git a/src/win.js b/src/win.js new file mode 100644 index 0000000..b515e10 --- /dev/null +++ b/src/win.js @@ -0,0 +1,5 @@ +/* + * Main Script for windows (pop-ups and stuff) + */ + +console.log('hello'); diff --git a/webpack.config.client.babel.js b/webpack.config.client.babel.js index a413773..5041761 100644 --- a/webpack.config.client.babel.js +++ b/webpack.config.client.babel.js @@ -64,6 +64,8 @@ export function buildWebpackClientConfig( [path.resolve(__dirname, 'src', 'client.js')], [(locale !== 'default') ? `globe-${locale}` : 'globe']: [path.resolve(__dirname, 'src', 'globe.js')], + [(locale !== 'default') ? `win-${locale}` : 'win']: + [path.resolve(__dirname, 'src', 'win.js')], }, output: {