revert: "fix(vite): remove "second" compression pass"

This reverts commit 096e0c84c1.
This commit is contained in:
Paul Makles 2022-01-02 16:07:47 +00:00
parent 1d4eed872b
commit 67936f53ed
4 changed files with 182 additions and 235 deletions

View file

@ -151,6 +151,7 @@
"typescript": "^4.4.2", "typescript": "^4.4.2",
"ulid": "^2.3.0", "ulid": "^2.3.0",
"use-resize-observer": "^7.0.0", "use-resize-observer": "^7.0.0",
"vite-plugin-compression": "^0.3.6",
"vite-plugin-pwa": "^0.8.1", "vite-plugin-pwa": "^0.8.1",
"workbox-precaching": "^6.1.5" "workbox-precaching": "^6.1.5"
}, },

View file

@ -1,18 +1,15 @@
import { Plus, LinkExternal } from "@styled-icons/boxicons-regular"; import { Plus, LinkExternal } from "@styled-icons/boxicons-regular";
import { Cog, Compass } from "@styled-icons/boxicons-solid"; import { Cog, Compass } from "@styled-icons/boxicons-solid";
import { observer } from "mobx-react-lite"; import { observer } from "mobx-react-lite";
import { DragDropContext } from "react-beautiful-dnd";
import { Link, useHistory, useLocation, useParams } from "react-router-dom"; import { Link, useHistory, useLocation, useParams } from "react-router-dom";
import { RelationshipStatus } from "revolt-api/types/Users"; import { RelationshipStatus } from "revolt-api/types/Users";
import styled, { css } from "styled-components"; import styled, { css } from "styled-components";
import { attachContextMenu } from "preact-context-menu"; import { attachContextMenu } from "preact-context-menu";
import { Text } from "preact-i18n"; import { Text } from "preact-i18n";
import { useState } from "preact/hooks";
import ConditionalLink from "../../../lib/ConditionalLink"; import ConditionalLink from "../../../lib/ConditionalLink";
import PaintCounter from "../../../lib/PaintCounter"; import PaintCounter from "../../../lib/PaintCounter";
import { Draggable, Droppable } from "../../../lib/dnd";
import { isTouchscreenDevice } from "../../../lib/isTouchscreenDevice"; import { isTouchscreenDevice } from "../../../lib/isTouchscreenDevice";
import { useApplicationState } from "../../../mobx/State"; import { useApplicationState } from "../../../mobx/State";
@ -238,7 +235,7 @@ export default observer(() => {
const { server: server_id } = useParams<{ server?: string }>(); const { server: server_id } = useParams<{ server?: string }>();
const server = server_id ? client.servers.get(server_id) : undefined; const server = server_id ? client.servers.get(server_id) : undefined;
const [servers, setServers] = useState([...client.servers.values()]); const servers = [...client.servers.values()];
const channels = [...client.channels.values()]; const channels = [...client.channels.values()];
const history = useHistory(); const history = useHistory();
@ -253,246 +250,181 @@ export default observer(() => {
typeof server === "undefined" && !path.startsWith("/invite"); typeof server === "undefined" && !path.startsWith("/invite");
return ( return (
<DragDropContext <ServersBase>
onDragEnd={(target) => { <ServerList>
if (target.destination) { <ConditionalLink
const arr = [...servers]; active={homeActive}
arr.splice( to={state.layout.getLastHomePath()}>
target.destination.index, <ServerEntry home active={homeActive}>
0, <Swoosh />
arr.splice(target.source.index, 1)[0], <div
); onContextMenu={attachContextMenu("Status")}
setServers(arr); onClick={() =>
} homeActive && history.push("/settings")
}}> }>
<ServersBase> <UserHover user={client.user ?? undefined}>
<Droppable droppableId="server_list"> <Icon
{(provided) => ( size={42}
<ServerList unread={
ref={provided.innerRef} alertCount > 0 ? "mention" : undefined
{...provided.droppableProps}> }
<ConditionalLink count={alertCount}>
active={homeActive} <UserIcon
to={state.layout.getLastHomePath()}> target={client.user ?? undefined}
<ServerEntry home active={homeActive}> size={32}
<Swoosh /> status
<div hover
onContextMenu={attachContextMenu( />
"Status", </Icon>
)} </UserHover>
onClick={() => </div>
homeActive && </ServerEntry>
history.push("/settings") </ConditionalLink>
}> {channels
<UserHover .filter(
user={client.user ?? undefined}> (x) =>
<Icon (x.channel_type === "DirectMessage" ||
size={42} x.channel_type === "Group") &&
unread={ x.unread,
alertCount > 0 )
? "mention" .map((x) => {
: undefined const unreadCount = x.mentions.length;
} return (
count={alertCount}> <Link to={`/channel/${x._id}`}>
<ServerEntry
home
active={false}
onContextMenu={attachContextMenu("Menu", {
channel: x._id,
unread: true,
})}>
<div>
<Icon
size={42}
unread={
unreadCount > 0
? "mention"
: "unread"
}
count={unreadCount}>
{x.channel_type ===
"DirectMessage" ? (
<UserIcon <UserIcon
target={ target={x.recipient}
client.user ?? undefined
}
size={32} size={32}
status
hover hover
/> />
</Icon> ) : (
</UserHover> <ChannelIcon
target={x}
size={32}
hover
/>
)}
</Icon>
</div> </div>
</ServerEntry> </ServerEntry>
</ConditionalLink> </Link>
{channels );
.filter( })}
(x) => <LineDivider />
(x.channel_type === "DirectMessage" || {servers.map((server) => {
x.channel_type === "Group") && const active = server._id === server_id;
x.unread,
)
.map((x) => {
const unreadCount = x.mentions.length;
return (
<Link to={`/channel/${x._id}`}>
<ServerEntry
home
active={false}
onContextMenu={attachContextMenu(
"Menu",
{
channel: x._id,
unread: true,
},
)}>
<div>
<Icon
size={42}
unread={
unreadCount > 0
? "mention"
: "unread"
}
count={unreadCount}>
{x.channel_type ===
"DirectMessage" ? (
<UserIcon
target={
x.recipient
}
size={32}
hover
/>
) : (
<ChannelIcon
target={x}
size={32}
hover
/>
)}
</Icon>
</div>
</ServerEntry>
</Link>
);
})}
<LineDivider />
{servers.map((server, index) => {
const active = server._id === server_id;
const isUnread = server.isUnread( const isUnread = server.isUnread(state.notifications);
state.notifications, const mentionCount = server.getMentions(
); state.notifications,
const mentionCount = server.getMentions( ).length;
state.notifications,
).length;
return ( return (
<Draggable <ConditionalLink
key={server._id} key={server._id}
draggableId={server._id} active={active}
index={index}> to={state.layout.getServerPath(server._id)}>
{(provided, snapshot) => ( <ServerEntry
<div active={active}
{...provided.draggableProps} onContextMenu={attachContextMenu("Menu", {
{...provided.dragHandleProps} server: server._id,
ref={provided.innerRef}> unread: isUnread,
<ConditionalLink })}>
active={active} <Swoosh />
to={state.layout.getServerPath(
server._id,
)}>
<ServerEntry
active={active}
onContextMenu={attachContextMenu(
"Menu",
{
server: server._id,
unread: isUnread,
},
)}>
{!snapshot.isDragging && (
<Swoosh />
)}
<Tooltip
content={
server.name
}
placement="right">
<Icon
size={42}
unread={
mentionCount >
0
? "mention"
: isUnread
? "unread"
: undefined
}
count={
mentionCount
}>
<ServerIcon
size={32}
target={
server
}
/>
</Icon>
</Tooltip>
</ServerEntry>
</ConditionalLink>
</div>
)}
</Draggable>
);
})}
{provided.placeholder}
<ServerCircle>
<Tooltip <Tooltip
content="Add a Server" content={server.name}
placement="right"> placement="right">
<div className="circle"> <Icon
<IconButton size={42}
onClick={() => unread={
openScreen({ mentionCount > 0
id: "special_input", ? "mention"
type: "create_server", : isUnread
}) ? "unread"
}> : undefined
<Plus size={32} /> }
</IconButton> count={mentionCount}>
</div> <ServerIcon size={32} target={server} />
</Icon>
</Tooltip> </Tooltip>
</ServerCircle> </ServerEntry>
<ServerCircle> </ConditionalLink>
<Tooltip );
content={ })}
<div {/*<LineDivider />*/}
style={{ <ServerCircle>
display: "flex", <Tooltip content="Add a Server" placement="right">
alignItems: "center", <div className="circle">
gap: "4px", <IconButton
}}> onClick={() =>
<div>Discover Public Servers</div> openScreen({
<LinkExternal size={12} /> id: "special_input",
</div> type: "create_server",
} })
placement="right"> }>
<div className="circle"> <Plus size={32} />
<IconButton> </IconButton>
<a </div>
href="https://revolt.social" </Tooltip>
target="_blank" </ServerCircle>
rel="noreferrer"> <ServerCircle>
<Compass size={32} /> <Tooltip
</a> content={
</IconButton> <div
</div> style={{
</Tooltip> display: "flex",
</ServerCircle> alignItems: "center",
</ServerList> gap: "4px",
)} }}>
</Droppable> <div>Discover Public Servers</div>
<PaintCounter small /> <LinkExternal size={12} />
{!isTouchscreenDevice && ( </div>
<SettingsButton> }
<Link to="/settings"> placement="right">
<Tooltip <div className="circle">
content={<Text id="app.settings.title" />} <IconButton>
placement="right"> <a
<IconButton> href="https://revolt.social"
<Cog size={32} strokeWidth="0.5" /> target="_blank"
</IconButton> rel="noreferrer">
</Tooltip> <Compass size={32} />
</Link> </a>
</SettingsButton> </IconButton>
)} </div>
</ServersBase> </Tooltip>
</DragDropContext> </ServerCircle>
</ServerList>
<PaintCounter small />
{!isTouchscreenDevice && (
<SettingsButton>
<Link to="/settings">
<Tooltip
content={<Text id="app.settings.title" />}
placement="right">
<IconButton>
<Cog size={32} strokeWidth="0.5" />
</IconButton>
</Tooltip>
</Link>
</SettingsButton>
)}
</ServersBase>
); );
}); });

View file

@ -2,6 +2,7 @@ import replace from "@rollup/plugin-replace";
import { readFileSync } from "fs"; import { readFileSync } from "fs";
import { resolve } from "path"; import { resolve } from "path";
import { defineConfig } from "vite"; import { defineConfig } from "vite";
import viteCompression from "vite-plugin-compression";
import { VitePWA } from "vite-plugin-pwa"; import { VitePWA } from "vite-plugin-pwa";
import preact from "@preact/preset-vite"; import preact from "@preact/preset-vite";
@ -42,6 +43,10 @@ function getVersion() {
export default defineConfig({ export default defineConfig({
plugins: [ plugins: [
viteCompression({
verbose: true,
algorithm: "brotliCompress",
}),
preact(), preact(),
VitePWA({ VitePWA({
srcDir: "src", srcDir: "src",

View file

@ -1887,7 +1887,7 @@ chalk@^2.0.0:
escape-string-regexp "^1.0.5" escape-string-regexp "^1.0.5"
supports-color "^5.3.0" supports-color "^5.3.0"
chalk@^4.0.0: chalk@^4.0.0, chalk@^4.1.2:
version "4.1.2" version "4.1.2"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
@ -4357,6 +4357,15 @@ value-equal@^1.0.1:
resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-1.0.1.tgz#1e0b794c734c5c0cade179c437d356d931a34d6c" resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-1.0.1.tgz#1e0b794c734c5c0cade179c437d356d931a34d6c"
integrity sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw== integrity sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==
vite-plugin-compression@^0.3.6:
version "0.3.6"
resolved "https://registry.yarnpkg.com/vite-plugin-compression/-/vite-plugin-compression-0.3.6.tgz#85e3ce5047ae6747bc3952177177a852fac901be"
integrity sha512-aSskQCJsP3VQ8PsnY+vO7UfD5qoFMOEuzg0PG2E9Zqyx+ARmc3wr9KCgOFraZOFW1Y4UAa5BR0SMTjoxHRMJoQ==
dependencies:
chalk "^4.1.2"
debug "^4.3.2"
fs-extra "^10.0.0"
vite-plugin-pwa@^0.8.1: vite-plugin-pwa@^0.8.1:
version "0.8.2" version "0.8.2"
resolved "https://registry.yarnpkg.com/vite-plugin-pwa/-/vite-plugin-pwa-0.8.2.tgz#2789a157e2f71faf834d968945efc22eee9ad64a" resolved "https://registry.yarnpkg.com/vite-plugin-pwa/-/vite-plugin-pwa-0.8.2.tgz#2789a157e2f71faf834d968945efc22eee9ad64a"