From 02489b674a7bc80689d055beabf4a1bd0c8d77a3 Mon Sep 17 00:00:00 2001 From: HF Date: Mon, 30 Nov 2020 15:40:33 +0100 Subject: [PATCH] archive political-compass canvas --- public/loading4.png | Bin 2240 -> 0 bytes public/preview4.png | Bin 4959 -> 0 bytes src/actions/index.js | 3 ++ src/canvases.json | 32 ----------------- src/components/ArchiveModal.jsx | 52 +++++++++++++++++++++++++++ src/components/CanvasSelectModal.jsx | 26 ++++++++++++-- src/components/HelpModal.jsx | 3 -- src/components/ModalRoot.jsx | 2 ++ src/routes/admintools.js | 4 ++- 9 files changed, 83 insertions(+), 39 deletions(-) delete mode 100644 public/loading4.png delete mode 100644 public/preview4.png create mode 100644 src/components/ArchiveModal.jsx diff --git a/public/loading4.png b/public/loading4.png deleted file mode 100644 index d9b83325257abe458eefcfde646046ff3c77daeb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2240 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

bgen zyQ+f`9@7>c8P&lpRxarmmZAQ<#uZ{u-AdGJElQqPbH~ql1%`9M z27fY6Zh~T{tEP=wRibg)->Omvw+m;j`Wiw(-KDdc-56RqboSgFi@Gtdx!l0leO)Mb z7Pw1~MJ9~?DZij=&12g)%oDq)7D7=!Uy$t$q|w^Tg)65b=JIwHOZEW{~m+Q6oDGvHaKF(kS=(KqYabuAL$)g=Bl` zhAqczu?$L&3Kz`$@M`*&oGz%l?~}r@6FyHjKVxHsKOVajDC>W_*pG6DK`f*nTFz0J zjOuXCV)xeMwUS#ws_gB@peTDp77@TZ6m*;Q{BO%3`|Gl zTIX3!lQ9;KSM9HyV@4|tP+2@{tM$5~c*nrKNi>bLYvb2PUmr^6@VnQ`e=Sa^vqU<( z*c4jjx0MriGU#Z%V0i-HG(xkc&Bhpecr@c|uD-0+=Ot_YloOtjqG3`wY$fLDF&X%_ zOy4L>b#)vBhrL6zii#I>`2`O+Yopx_pAN-ib$Xv;df>ItDZ`p>u0q)q7bE}l+#GxD zpr;r z^@>jArtd?Sq@y$b39Bk;E?L#h?Bg(RfU5k{$uK`Xk;t<~EGp@y+W*(Y{Ey-B1XkS% zZnU0Om}y8(xLlOY@AdcGn-&=6YJHkb2;Y}v&aZ8y{3WJys9fk$K?ooidz~e#9-YPl zNP6KHJpo-lqv)uUn}xoIF@EPy&p4`Xe{DGoczR-D2^9lG!3RSt=h|E9ZX;TVBwUD& zd6*|&3)%*ORD)GQ9#{L--t*{)sliJmj{SN$BSM)=4e_=-zKq2EVNTIr{Bu&8A4Ky* zy4FkPh6Qx{L1N{C@%_dtc3rTStSKxn0bzPj`s|WGE$B9dio3;>e7D4%po`OWE@OBo zy#&-rA9|+-MKbM{SS(EsV*4lp;n{s>&kkIQ8>o&O*h(UvOUFYN7(Pa9P|*W2kQPS$ znDbzGxj2~_3ykXp@#OnI(s4Ll!1WVzrddG%|j{ zAIYHba;XKMSJ-8Att*qONbwZ5vy%C-<@+O&7V@-sV@g?BIeiGZBG=YpARKMa?lnVO t_Q>UZgFSoC-YwMzt?Kmmvj^v@Q7dVhKkRO)UaeUGx-dg%m4;p9e*x4+P+I^1 diff --git a/src/actions/index.js b/src/actions/index.js index ed8e68b..35bf796 100644 --- a/src/actions/index.js +++ b/src/actions/index.js @@ -712,6 +712,9 @@ export function showForgotPasswordModal(): Action { export function showHelpModal(): Action { return showModal('HELP'); } +export function showArchiveModal(): Action { + return showModal('ARCHIVE'); +} export function showCanvasSelectionModal(): Action { return showModal('CANVAS_SELECTION'); diff --git a/src/canvases.json b/src/canvases.json index f0d8803..34a716c 100644 --- a/src/canvases.json +++ b/src/canvases.json @@ -212,38 +212,6 @@ "sd": "2020-03-15", "desc": "Special canvas to spread awareness of SARS-CoV2" }, - "4": { - "ident": "p", - "title": "Political Compass", - "colors": [ - [ 196, 196, 196 ], - [ 0, 243, 0 ], - [ 0, 105, 43 ], - [ 0, 247, 250 ], - [ 5, 50, 250 ], - [ 156, 69, 250 ], - [ 213, 43, 162 ], - [ 252, 121, 250 ], - [ 0, 0, 0 ], - [ 249, 249, 249 ], - [ 146, 146, 146 ], - [ 132, 90, 42 ], - [ 252, 37, 0 ], - [ 245, 162, 29 ], - [ 250, 210, 168 ], - [ 250, 246, 0 ] - ], - "size": 1024, - "hid": false, - "cli": 0, - "bcd": 5000, - "pcd": 5000, - "cds": 60000, - "ranked": true, - "req": -1, - "sd": "2020-05-11", - "desc": "A meme" - }, "5": { "ident": "y", "title": "PixelZone", diff --git a/src/components/ArchiveModal.jsx b/src/components/ArchiveModal.jsx new file mode 100644 index 0000000..ba72a5a --- /dev/null +++ b/src/components/ArchiveModal.jsx @@ -0,0 +1,52 @@ +/* + * @flow + */ + +/* eslint-disable max-len */ + +import React from 'react'; + +const imageStyle = { + maxWidth: '20%', + padding: 2, + display: 'inline-block', + verticalAlign: 'middle', +}; + +const ArchiveModal = () => ( +

+

+ While we tend to not delete canvases, some canvases are started for fun or as a request by users who currently like a meme. + Those canvases can get boring after a while and after weeks of no major change and if they really aren't worth being kept active, we decide to remove them.
+ Here we collect those canvases to archive them in a proper way (which is currently just one). +

+

Political Compass Canvas

+ political-compass +

+ This canvas got requested during a time of political conflicts on the main Earth canvas. It was a 1024x1024 representation of the political compass with a 5s coolodwn and 60s stacking. It got launched on May 11th and remained active for months till it got shut down on November 30th.
+ We decided to archive it as a timelapse with lossless encoded webm. Taking a screenshot from the timelapse results in a perfect 1:1 representation of how the canvas was at that time. +

+

+ Timelapse: + + Download + +

+ political-compass +

+); + +const data = { + content: ArchiveModal, + title: 'Canvas Archive', +}; + +export default data; diff --git a/src/components/CanvasSelectModal.jsx b/src/components/CanvasSelectModal.jsx index 4772db2..ae1f85b 100644 --- a/src/components/CanvasSelectModal.jsx +++ b/src/components/CanvasSelectModal.jsx @@ -7,11 +7,16 @@ import React from 'react'; import { connect } from 'react-redux'; import CanvasItem from './CanvasItem'; +import { showArchiveModal } from '../actions'; import type { State } from '../reducers'; -const CanvasSelectModal = ({ canvases, showHiddenCanvases }) => ( +const CanvasSelectModal = ({ + canvases, + showHiddenCanvases, + showArchive, +}) => (

(

Select the canvas you want to use. Every canvas is unique and has different palettes, - cooldown and requirements. + cooldown and requirements. Archive of closed canvases can be + accessed  + here.

{ Object.keys(canvases).map((canvasId) => ( @@ -34,6 +46,14 @@ const CanvasSelectModal = ({ canvases, showHiddenCanvases }) => (

); +function mapDispatchToProps(dispatch) { + return { + showArchive() { + dispatch(showArchiveModal()); + }, + }; +} + function mapStateToProps(state: State) { const { canvases, @@ -43,7 +63,7 @@ function mapStateToProps(state: State) { } const data = { - content: connect(mapStateToProps)(CanvasSelectModal), + content: connect(mapStateToProps, mapDispatchToProps)(CanvasSelectModal), title: 'Canvas Selection', }; diff --git a/src/components/HelpModal.jsx b/src/components/HelpModal.jsx index a723f53..188c99e 100644 --- a/src/components/HelpModal.jsx +++ b/src/components/HelpModal.jsx @@ -4,9 +4,6 @@ */ import React from 'react'; -// import FaFacebook from 'react-icons/lib/fa/facebook'; -// import FaTwitter from 'react-icons/lib/fa/twitter'; -// import FaRedditAlien from 'react-icons/lib/fa/reddit-alien'; /* eslint-disable max-len */ diff --git a/src/components/ModalRoot.jsx b/src/components/ModalRoot.jsx index 868709f..ae26e8d 100644 --- a/src/components/ModalRoot.jsx +++ b/src/components/ModalRoot.jsx @@ -19,6 +19,7 @@ import SettingsModal from './SettingsModal'; import UserAreaModal from './UserAreaModal'; import RegisterModal from './RegisterModal'; import CanvasSelectModal from './CanvasSelectModal'; +import ArchiveModal from './ArchiveModal'; import ChatModal from './ChatModal'; import ForgotPasswordModal from './ForgotPasswordModal'; @@ -32,6 +33,7 @@ const MODAL_COMPONENTS = { FORGOT_PASSWORD: ForgotPasswordModal, CHAT: ChatModal, CANVAS_SELECTION: CanvasSelectModal, + ARCHIVE: ArchiveModal, /* other modals */ }; diff --git a/src/routes/admintools.js b/src/routes/admintools.js index 32fb011..2600a24 100644 --- a/src/routes/admintools.js +++ b/src/routes/admintools.js @@ -67,7 +67,9 @@ router.use(passport.session()); router.use(async (req, res, next) => { const ip = getIPFromRequest(req); if (!req.user) { - admintoolsLogger.info(`ADMINTOOLS: ${ip} tried to access admintools without login`); + admintoolsLogger.info( + `ADMINTOOLS: ${ip} tried to access admintools without login`, + ); res.status(403).send('You are not logged in'); return; }