diff --git a/src/dmDates/index.ts b/src/dmDates/index.ts new file mode 100644 index 0000000..8cc8d19 --- /dev/null +++ b/src/dmDates/index.ts @@ -0,0 +1,14 @@ +import { ExtensionWebpackModule } from "@moonlight-mod/types"; + +export const webpackModules: Record = { + dmDates: { + entrypoint: true, + dependencies: [ + { id: "react" }, + { id: "discord/components/common/index" }, + { ext: "spacepack", id: "spacepack" }, + { ext: "componentEditor", id: "dmList" }, + moonlight.enabledExtensions.has("dmFavorites") && { ext: "dmFavorites", id: "icon" } + ].filter((d) => !!d) + } +}; diff --git a/src/dmDates/manifest.json b/src/dmDates/manifest.json new file mode 100644 index 0000000..9388105 --- /dev/null +++ b/src/dmDates/manifest.json @@ -0,0 +1,14 @@ +{ + "$schema": "https://moonlight-mod.github.io/manifest.schema.json", + "id": "dmDates", + "version": "1.0.0", + "meta": { + "name": "DM Dates", + "tagline": "Implements dates next to direct messages like mobile", + "authors": ["Cynosphere"], + "tags": ["chat", "qol"], + "source": "https://github.com/Cynosphere/moonlight-extensions" + }, + "dependencies": ["spacepack", "componentEditor"], + "apiLevel": 2 +} diff --git a/src/dmDates/style.css b/src/dmDates/style.css new file mode 100644 index 0000000..7394356 --- /dev/null +++ b/src/dmDates/style.css @@ -0,0 +1,3 @@ +.dmDate-date { + margin-right: 4px; +} diff --git a/src/dmDates/webpackModules/dmDates.tsx b/src/dmDates/webpackModules/dmDates.tsx new file mode 100644 index 0000000..d7bb197 --- /dev/null +++ b/src/dmDates/webpackModules/dmDates.tsx @@ -0,0 +1,21 @@ +import React from "@moonlight-mod/wp/react"; +import spacepack from "@moonlight-mod/wp/spacepack_spacepack"; +import DMList from "@moonlight-mod/wp/componentEditor_dmList"; +import { Text } from "@moonlight-mod/wp/discord/components/common/index"; + +const getTimestampString = spacepack.findByCode('["XIGt+f"]')[0].exports; +const getAbbreviatedFormatter = spacepack.findFunctionByStrings(getTimestampString, '["XIGt+f"]'); +const SnowflakeUtils = spacepack.require("discord/utils/SnowflakeUtils").default; + +function DMDate({ channel }: { channel: any }) { + const lastMessage = SnowflakeUtils.extractTimestamp(channel.lastMessageId ?? channel.id); + const formattedTime = getTimestampString.ZP({ since: lastMessage, getFormatter: getAbbreviatedFormatter }); + + return ( + + {formattedTime} + + ); +} + +DMList.addItem("dmDates", DMDate, "close-button", true); diff --git a/src/dmFavorites/manifest.json b/src/dmFavorites/manifest.json index 0018371..bbc760e 100644 --- a/src/dmFavorites/manifest.json +++ b/src/dmFavorites/manifest.json @@ -1,7 +1,7 @@ { "$schema": "https://moonlight-mod.github.io/manifest.schema.json", "id": "dmFavorites", - "version": "1.0.1", + "version": "1.0.2", "meta": { "name": "DM Favorites", "tagline": "Implements favorited direct messages from mobile", diff --git a/src/dmFavorites/style.css b/src/dmFavorites/style.css new file mode 100644 index 0000000..455459f --- /dev/null +++ b/src/dmFavorites/style.css @@ -0,0 +1,3 @@ +.dmFavorites-icon { + margin-right: 4px; +} diff --git a/src/dmFavorites/webpackModules/icon.tsx b/src/dmFavorites/webpackModules/icon.tsx index e72d1d5..a4d4b9c 100644 --- a/src/dmFavorites/webpackModules/icon.tsx +++ b/src/dmFavorites/webpackModules/icon.tsx @@ -1,8 +1,8 @@ import React from "@moonlight-mod/wp/react"; import spacepack from "@moonlight-mod/wp/spacepack_spacepack"; import { UserGuildSettingsStore } from "@moonlight-mod/wp/common_stores"; +import DMList from "@moonlight-mod/wp/componentEditor_dmList"; -const DMList = spacepack.require("componentEditor_dmList").default; const { StarIcon } = spacepack.require("discord/components/common/index"); function FavoritedIcon(props: any) { @@ -10,7 +10,7 @@ function FavoritedIcon(props: any) { const override = UserGuildSettingsStore.getChannelOverrides("null")[id] ?? {}; const isFavorite = (override.flags & 2048) !== 0; - return isFavorite ? : null; + return isFavorite ? : null; } DMList.addItem("dmFavorites", FavoritedIcon, "close-button", true);