finally
This commit is contained in:
parent
082b86e879
commit
116348eab1
7 changed files with 168 additions and 91 deletions
|
|
@ -1,8 +1,8 @@
|
|||
{
|
||||
"description": "Assists with translating Vencord",
|
||||
"description": "Assists with translating Equicord",
|
||||
"settings": {
|
||||
"forceLocale": {
|
||||
"description": "Force a different locale for Vencord to use",
|
||||
"description": "Force a different locale for Equicord to use",
|
||||
"followDiscord": "Default (follow Discord)"
|
||||
},
|
||||
"showMissingKeys": "If the current locale is missing translations, show the keys instead of falling back to English"
|
||||
|
|
|
|||
|
|
@ -1,4 +1,22 @@
|
|||
{
|
||||
"donate": "Donate",
|
||||
"invite": "Invite",
|
||||
"loading": "Loading...",
|
||||
"logs": {
|
||||
"cancel": "Cancel",
|
||||
"clearLog": "Clear Log",
|
||||
"clearLogConfirmation": "Are you sure you would like to clear this log? This can't be undone.",
|
||||
"logCleared": "Log has been cleared",
|
||||
"clearLogs": "Clear Logs",
|
||||
"clearLogsConfirmation": "Are you sure you would like to clear these logs? This can't be undone.",
|
||||
"logsCleared": "Selected logs have been cleared",
|
||||
"hideLogs": "Hide Logs",
|
||||
"showLogs": "Show Logs",
|
||||
"clearAllLogs": "Clear All Logs",
|
||||
"clearAll": "Clear All",
|
||||
"clearAllLogsConfirmation": "Are you sure you would like to clear all logs? This can't be undone.",
|
||||
"allLogsCleared": "All logs have been cleared"
|
||||
},
|
||||
"addonCard": {
|
||||
"new": "NEW"
|
||||
},
|
||||
|
|
@ -18,8 +36,6 @@
|
|||
"subtitle": "Thank you for contributing!",
|
||||
"title": "Contributions"
|
||||
},
|
||||
"donate": "Donate",
|
||||
"invite": "Invite",
|
||||
"donorCard": {
|
||||
"donated": {
|
||||
"vencordDescription": "All Vencord users can see your badge! You can manage your perks by messaging @{v}.",
|
||||
|
|
@ -68,13 +84,74 @@
|
|||
"plugins_one": "This person has <0>contributed</0> to {count} plugin!",
|
||||
"plugins_other": "This person has <0>contributed</0> to {count} plugins!"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requiredToFunction": "This plugin is required for Equicord to function",
|
||||
"pluginRequiredBy": "This plugin is required by: {pluginNames}",
|
||||
"noDescription": "No description available",
|
||||
},
|
||||
"changelog": {
|
||||
"manager": {
|
||||
"minutes_one": "{count} minute ago",
|
||||
"minutes_other": "{count} minutes ago",
|
||||
"hours_one": "{count} hour ago",
|
||||
"hours_other": "{count} hours ago",
|
||||
"days_one": "{count} day ago",
|
||||
"days_other": "{count} days ago"
|
||||
},
|
||||
"updateCard": {
|
||||
"upToDate": "Repository check: {fromHash} (up to date)",
|
||||
"outOfDate": "Repository check: {fromHash} → {toHash}",
|
||||
"update": "Update: {fromHash} → {toHash}",
|
||||
"commits_zero": " • No new commits",
|
||||
"commits_one": " • {count} commit available",
|
||||
"commits_other": " • {count} commits available",
|
||||
"newPluginsCount": " • {plugins} new plugins",
|
||||
"updatedPluginsCount": " • {plugins} updated plugins",
|
||||
"newSettingsCount": " • {settings} new settings",
|
||||
"updatedPlugins": "Updated Plugins",
|
||||
"newSettings": "New Settings",
|
||||
"newSettingInPlugin": "New setting in {pluginName}"
|
||||
},
|
||||
"newPluginsSection": {
|
||||
"newPluginsCount": "New Plugins ({count})",
|
||||
"recentlyAddedPlugins": "The following plugins have been added in recent updates:",
|
||||
"numMorePlugins_one": "+{count} more plugin",
|
||||
"numMorePlugins_other": "+{count} more plugins"
|
||||
},
|
||||
"missingRepoInfo": "Failed to retrieve repository information",
|
||||
"alreadyUpToDate": "Already up todate with repository",
|
||||
"foundCommits_zero": "No new commits",
|
||||
"foundCommits_one": "Found {count} commit from repository",
|
||||
"foundCommits_other": "Found {count} commits from repository",
|
||||
"loggedCommits": "Logged commits from your latest update",
|
||||
"upToDateLocalCopy": "Repository is up to date with your local copy",
|
||||
"failedToFetchRepo": "Failed to fetch from repository",
|
||||
"checkYourConnection": "Failed to connect to repository. Check your internet connection",
|
||||
"failedtoFetchCommits": "Could not fetch commits from repository",
|
||||
"repository": "Repository",
|
||||
"viewRecentChanges": "View the most recent changes to Equicord. This fetches commits directly from the repository to show you what's new",
|
||||
"failedToRetrieve": "Failed to retrieve - check console",
|
||||
"upToDate": "Repository Up To Date",
|
||||
"fetchRepo": "Fetch from Repository",
|
||||
"checkYourInternet": "Make sure you have an internet connection and try again",
|
||||
"recentChanges": "Recent Changes",
|
||||
"updatedPluginsCount": "Updated Plugins ({plugins})",
|
||||
"codeChanges_zero": "No Code Changes",
|
||||
"codeChanges_one": "Code Changes ({count} commit)",
|
||||
"codeChanges_other": "Code Changes ({count} commits)",
|
||||
"emptyChangelog": "No commits available ahead of your current version. Click \"Fetch from Repository\" to check for new changes",
|
||||
"updateLogs_zero": "No Update Logs",
|
||||
"updateLogs_one": "Update Logs ({count} log)",
|
||||
"updateLogs_other": "Update Logs ({count} logs)",
|
||||
"previousSessions": "Previous update sessions with their commit history and plugin changes",
|
||||
"title": "Changelog"
|
||||
},
|
||||
"restartRequired": {
|
||||
"body": "A restart is required to apply this change",
|
||||
"cancel": "Later!",
|
||||
"confirm": "Restart now",
|
||||
"title": "Restart Required"
|
||||
"title": "Restart Required",
|
||||
"plugins": "The following plugins require a restart:"
|
||||
},
|
||||
"title": "Settings",
|
||||
"transparent": {
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ import { PluginCard } from "@components/settings/tabs/plugins/PluginCard";
|
|||
import { ChangeList } from "@utils/ChangeList";
|
||||
import { Margins } from "@utils/margins";
|
||||
import { useForceUpdater } from "@utils/react";
|
||||
import { t } from "@utils/translation";
|
||||
import { Button, React, Tooltip } from "@webpack/common";
|
||||
|
||||
import Plugins from "~plugins";
|
||||
|
|
@ -78,11 +79,11 @@ export function NewPluginsSection({
|
|||
return (
|
||||
<div className={cl("new-plugins-section")}>
|
||||
<Heading className={Margins.bottom8}>
|
||||
New Plugins ({sortedPlugins.length})
|
||||
{t("vencord.settings.changelog.newPluginsSection.newPluginsCount", { count: sortedPlugins.length })}
|
||||
</Heading>
|
||||
|
||||
<Paragraph className={Margins.bottom16}>
|
||||
The following plugins have been added in recent updates:
|
||||
{t("vencord.settings.changelog.newPluginsSection.recentlyAddedPlugins")}
|
||||
</Paragraph>
|
||||
|
||||
<div className={cl("new-plugins-grid")}>
|
||||
|
|
@ -94,7 +95,7 @@ export function NewPluginsSection({
|
|||
) ||
|
||||
plugin.name.endsWith("API");
|
||||
const tooltipText = plugin.required
|
||||
? "This plugin is required for Equicord to function."
|
||||
? t("vencord.settings.plugins.requiredToFunction")
|
||||
: makeDependencyList(
|
||||
depMap[plugin.name]?.filter(
|
||||
d => settings.plugins[d].enabled,
|
||||
|
|
@ -152,7 +153,7 @@ export function NewPluginsSection({
|
|||
<Tooltip
|
||||
text={
|
||||
<>
|
||||
The following plugins require a restart:
|
||||
{t("vencord.settings.restartRequired.plugins")}
|
||||
<div className={Margins.bottom8} />
|
||||
<ul>
|
||||
{changes.map(p => (
|
||||
|
|
@ -170,7 +171,7 @@ export function NewPluginsSection({
|
|||
onClick={() => location.reload()}
|
||||
className={Margins.top16}
|
||||
>
|
||||
Restart Required
|
||||
{t("vencord.settings.restartRequired.title")}
|
||||
</Button>
|
||||
)}
|
||||
</Tooltip>
|
||||
|
|
@ -202,11 +203,9 @@ function CompactPluginCard({
|
|||
depMap[plugin.name]?.some(d => settings.plugins[d].enabled);
|
||||
|
||||
const tooltipText = plugin.required
|
||||
? "This plugin is required for Equicord to function."
|
||||
? t("vencord.settings.plugins.requiredToFunction")
|
||||
: depMap[plugin.name]?.length > 0
|
||||
? `This plugin is required by: ${depMap[plugin.name]
|
||||
?.filter(d => settings.plugins[d].enabled)
|
||||
.join(", ")}`
|
||||
? t("vencord.settings.plugins.pluginRequiredBy", { pluginNames: depMap[plugin.name]?.filter(d => settings.plugins[d].enabled).join(", ") })
|
||||
: null;
|
||||
|
||||
return (
|
||||
|
|
@ -221,7 +220,7 @@ function CompactPluginCard({
|
|||
</span>
|
||||
</div>
|
||||
<div className="vc-changelog-entry-message">
|
||||
{plugin.description || "No description available"}
|
||||
{plugin.description || t("vencord.settings.plugins.noDescription")}
|
||||
</div>
|
||||
{tooltipText && (
|
||||
<div className="vc-changelog-dep-text">{tooltipText}</div>
|
||||
|
|
@ -272,7 +271,7 @@ export function NewPluginsCompact({
|
|||
{hasMore && (
|
||||
<div className="vc-changelog-entry">
|
||||
<div className="vc-changelog-entry-message">
|
||||
+{newPlugins.length - maxDisplay} more plugins
|
||||
{t("vencord.settings.changelog.newPluginsSection.numMorePlugins", { count: newPlugins.length - maxDisplay })}
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@
|
|||
*/
|
||||
|
||||
import { DataStore } from "@api/index";
|
||||
import { t } from "@utils/translation";
|
||||
|
||||
import gitHash from "~git-hash";
|
||||
import plugins from "~plugins";
|
||||
|
|
@ -479,11 +480,11 @@ export function formatTimestamp(timestamp: number): string {
|
|||
const diffDays = Math.floor(diffMs / (1000 * 60 * 60 * 24));
|
||||
|
||||
if (diffMinutes < 60) {
|
||||
return `${diffMinutes} minute${diffMinutes !== 1 ? "s" : ""} ago`;
|
||||
return t("vencord.settings.changelog.manager.minutes", { count: diffMinutes });
|
||||
} else if (diffHours < 24) {
|
||||
return `${diffHours} hour${diffHours !== 1 ? "s" : ""} ago`;
|
||||
return t("vencord.settings.changelog.manager.hours", { count: diffHours });
|
||||
} else if (diffDays < 7) {
|
||||
return `${diffDays} day${diffDays !== 1 ? "s" : ""} ago`;
|
||||
return t("vencord.settings.changelog.manager.days", { count: diffDays });
|
||||
} else {
|
||||
return date.toLocaleDateString();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,14 +15,13 @@ import { Link } from "@components/Link";
|
|||
import { Paragraph } from "@components/Paragraph";
|
||||
import { SettingsTab, wrapTab } from "@components/settings/tabs/BaseTab";
|
||||
import { HashLink } from "@components/settings/tabs/updater/Components";
|
||||
import { gitHashShort } from "@shared/vencordUserAgent";
|
||||
import { gitHash, gitHashShort } from "@shared/vencordUserAgent";
|
||||
import { Margins } from "@utils/margins";
|
||||
import { useAwaiter } from "@utils/react";
|
||||
import { t } from "@utils/translation";
|
||||
import { getRepo, UpdateLogger } from "@utils/updater";
|
||||
import { Alerts, Button, React, Toasts } from "@webpack/common";
|
||||
|
||||
import gitHash from "~git-hash";
|
||||
|
||||
import {
|
||||
ChangelogEntry,
|
||||
ChangelogHistory,
|
||||
|
|
@ -111,9 +110,10 @@ function UpdateLogCard({
|
|||
<span>
|
||||
{isRepositoryFetch
|
||||
? isUpToDate
|
||||
? `Repository check: ${log.fromHash.slice(0, 7)} (up to date)`
|
||||
: `Repository check: ${log.fromHash.slice(0, 7)} → ${log.toHash.slice(0, 7)}`
|
||||
: `Update: ${log.fromHash.slice(0, 7)} → ${log.toHash.slice(0, 7)}`}
|
||||
? t("vencord.settings.changelog.updateCard.upToDate", { fromHash: log.fromHash.slice(0, 7) })
|
||||
: t("vencord.settings.changelog.updateCard.outOfDate", { fromHash: log.fromHash.slice(0, 7), toHash: log.toHash.slice(0, 7) })
|
||||
: t("vencord.settings.changelog.updateCard.update", { fromHash: log.fromHash.slice(0, 7), toHash: log.toHash.slice(0, 7) })
|
||||
}
|
||||
</span>
|
||||
<Button
|
||||
size={Button.Sizes.NONE}
|
||||
|
|
@ -139,16 +139,14 @@ function UpdateLogCard({
|
|||
</div>
|
||||
<div className="vc-changelog-log-meta">
|
||||
{formatTimestamp(log.timestamp)}
|
||||
{log.commits.length > 0 &&
|
||||
` • ${log.commits.length} commits available`}
|
||||
{log.commits.length === 0 && " • No new commits"}
|
||||
{log.newPlugins.length > 0 &&
|
||||
` • ${log.newPlugins.length} new plugins`}
|
||||
{log.updatedPlugins.length > 0 &&
|
||||
` • ${log.updatedPlugins.length} updated plugins`}
|
||||
{t("vencord.settings.changelog.updateCard.commits", { count: log.commits.length })}
|
||||
{log.newPlugins.length > 0 && t("vencord.settings.changelog.updateCard.newPluginsCount", { plugins: log.newPlugins.length })}
|
||||
{log.updatedPlugins.length > 0 && t("vencord.settings.changelog.updateCard.updatedPluginsCount", { plugins: log.updatedPlugins.length })}
|
||||
{log.newSettings &&
|
||||
getNewSettingsSize(log.newSettings) > 0 &&
|
||||
` • ${getNewSettingsEntries(log.newSettings).reduce((sum, [, arr]) => sum + arr.length, 0)} new settings`}
|
||||
t("vencord.settings.changelog.updateCard.newSettingsCount", {
|
||||
settings: getNewSettingsEntries(log.newSettings).reduce((sum, [, arr]) => sum + arr.length, 0)
|
||||
})}
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
|
|
@ -172,7 +170,7 @@ function UpdateLogCard({
|
|||
{log.updatedPlugins.length > 0 && (
|
||||
<div className="vc-changelog-log-plugins">
|
||||
<Heading className={Margins.bottom8}>
|
||||
Updated Plugins
|
||||
{t("vencord.settings.changelog.updateCard.updatedPlugins")}
|
||||
</Heading>
|
||||
<NewPluginsCompact
|
||||
newPlugins={log.updatedPlugins}
|
||||
|
|
@ -185,7 +183,7 @@ function UpdateLogCard({
|
|||
getNewSettingsSize(log.newSettings) > 0 && (
|
||||
<div className="vc-changelog-log-plugins">
|
||||
<Heading className={Margins.bottom8}>
|
||||
New Settings
|
||||
{t("vencord.settings.changelog.updateCard.newSettings")}
|
||||
</Heading>
|
||||
<div className="vc-changelog-new-plugins-list">
|
||||
{getNewSettingsEntries(log.newSettings).map(
|
||||
|
|
@ -194,7 +192,7 @@ function UpdateLogCard({
|
|||
<span
|
||||
key={`${pluginName}-${setting}`}
|
||||
className="vc-changelog-new-plugin-tag"
|
||||
title={`New setting in ${pluginName}`}
|
||||
title={t("vencord.settings.changelog.updateCard.newSettingInPlugin", { pluginName: pluginName })}
|
||||
>
|
||||
{pluginName}.{setting}
|
||||
</span>
|
||||
|
|
@ -226,7 +224,7 @@ function UpdateLogCard({
|
|||
|
||||
function ChangelogContent() {
|
||||
const [repo, repoErr, repoPending] = useAwaiter(getRepo, {
|
||||
fallbackValue: "Loading...",
|
||||
fallbackValue: t("vencord.loading"),
|
||||
});
|
||||
const [changelog, setChangelog] = React.useState<ChangelogEntry[]>([]);
|
||||
const [changelogHistory, setChangelogHistory] =
|
||||
|
|
@ -256,7 +254,7 @@ function ChangelogContent() {
|
|||
React.useEffect(() => {
|
||||
if (repoErr) {
|
||||
UpdateLogger.error("Failed to retrieve repo", repoErr);
|
||||
setError("Failed to retrieve repository information");
|
||||
setError(t("vencord.settings.changelog.missingRepoInfo"));
|
||||
}
|
||||
}, [repoErr]);
|
||||
|
||||
|
|
@ -354,7 +352,7 @@ function ChangelogContent() {
|
|||
if (!logged) {
|
||||
setChangelog([]);
|
||||
Toasts.show({
|
||||
message: "Already up to date with repository",
|
||||
message: t("vencord.settings.changelog.alreadyUpToDate"),
|
||||
id: Toasts.genId(),
|
||||
type: Toasts.Type.MESSAGE,
|
||||
options: {
|
||||
|
|
@ -386,7 +384,7 @@ function ChangelogContent() {
|
|||
setRecentlyChecked(true);
|
||||
|
||||
Toasts.show({
|
||||
message: `Found ${updates.value.length} commit${updates.value.length === 1 ? "" : "s"} from repository`,
|
||||
message: t("vencord.settings.changelog.foundCommits", { count: updates.value.length }),
|
||||
id: Toasts.genId(),
|
||||
type: Toasts.Type.SUCCESS,
|
||||
options: {
|
||||
|
|
@ -398,8 +396,8 @@ function ChangelogContent() {
|
|||
setRecentlyChecked(true);
|
||||
Toasts.show({
|
||||
message: logged
|
||||
? "Logged commits from your latest update"
|
||||
: "Repository is up to date with your local copy",
|
||||
? t("vencord.settings.changelog.loggedCommits")
|
||||
: t("vencord.settings.changelog.upToDateLocalCopy"),
|
||||
id: Toasts.genId(),
|
||||
type: logged ? Toasts.Type.SUCCESS : Toasts.Type.MESSAGE,
|
||||
options: {
|
||||
|
|
@ -412,19 +410,19 @@ function ChangelogContent() {
|
|||
}
|
||||
} else if (!updates.ok) {
|
||||
throw new Error(
|
||||
updates.error?.message || "Failed to fetch from repository",
|
||||
updates.error?.message || t("vencord.settings.changelog.missingRepoInfo"),
|
||||
);
|
||||
}
|
||||
} catch (err: any) {
|
||||
UpdateLogger.error("Failed to fetch commits from repository", err);
|
||||
const errorMessage =
|
||||
err?.message ||
|
||||
"Failed to connect to repository. Check your internet connection.";
|
||||
t("vencord.settings.changelog.checkYourConnection");
|
||||
setError(errorMessage);
|
||||
|
||||
// funny little error toast hopefully doesn't happen!
|
||||
Toasts.show({
|
||||
message: "Could not fetch commits from repository",
|
||||
message: t("vencord.settings.changelog.failedtoFetchCommits"),
|
||||
id: Toasts.genId(),
|
||||
type: Toasts.Type.FAILURE,
|
||||
options: {
|
||||
|
|
@ -479,16 +477,15 @@ function ChangelogContent() {
|
|||
return (
|
||||
<>
|
||||
<Paragraph className={Margins.bottom16}>
|
||||
View the most recent changes to Equicord. This fetches commits
|
||||
directly from the repository to show you what's new.
|
||||
{t("vencord.settings.changelog.viewRecentChanges")}
|
||||
</Paragraph>
|
||||
|
||||
<Heading>Repository</Heading>
|
||||
<Heading>{t("vencord.settings.changelog.repository")}</Heading>
|
||||
<Paragraph className={Margins.bottom16}>
|
||||
{repoPending ? (
|
||||
repo
|
||||
) : repoErr ? (
|
||||
"Failed to retrieve - check console"
|
||||
t("vencord.settings.changelog.failedToRetrieve")
|
||||
) : (
|
||||
<Link href={repo}>
|
||||
{repo.split("/").slice(-2).join("/")}
|
||||
|
|
@ -513,10 +510,11 @@ function ChangelogContent() {
|
|||
}
|
||||
>
|
||||
{isLoading
|
||||
? "Loading..."
|
||||
? t("vencord.loading")
|
||||
: recentlyChecked
|
||||
? "Repository Up to Date"
|
||||
: "Fetch from Repository"}
|
||||
? t("vencord.settings.changelog.upToDate")
|
||||
: t("vencord.settings.changelog.fetchRepo")
|
||||
}
|
||||
</Button>
|
||||
|
||||
{changelogHistory.length > 0 && (
|
||||
|
|
@ -531,25 +529,24 @@ function ChangelogContent() {
|
|||
onClick={() => setShowHistory(!showHistory)}
|
||||
style={{ marginLeft: "8px" }}
|
||||
>
|
||||
{showHistory ? "Hide Logs" : "Show Logs"}
|
||||
{showHistory ? t("vencord.logs.hideLogs") : t("vencord.logs.showLogs")}
|
||||
</Button>
|
||||
<Button
|
||||
size={Button.Sizes.SMALL}
|
||||
color={Button.Colors.RED}
|
||||
onClick={() => {
|
||||
Alerts.show({
|
||||
title: "Clear All Logs",
|
||||
body: "Are you sure you would like to clear all logs? This can't be undone.",
|
||||
confirmText: "Clear All",
|
||||
title: t("vencord.logs.clearAllLogs"),
|
||||
body: t("vencord.logs.clearAllLogsConfirmation"),
|
||||
confirmText: t("vencord.logs.clearAll"),
|
||||
confirmColor: "danger",
|
||||
cancelText: "Cancel",
|
||||
cancelText: t("vencord.cancel"),
|
||||
onConfirm: async () => {
|
||||
await clearChangelogHistory();
|
||||
await loadChangelogHistory();
|
||||
setShowHistory(false);
|
||||
Toasts.show({
|
||||
message:
|
||||
"All logs have been cleared",
|
||||
message: t("vencord.logs.allLogsCleared"),
|
||||
id: Toasts.genId(),
|
||||
type: Toasts.Type.SUCCESS,
|
||||
options: {
|
||||
|
|
@ -562,7 +559,7 @@ function ChangelogContent() {
|
|||
}}
|
||||
style={{ marginLeft: "8px" }}
|
||||
>
|
||||
Clear All Logs
|
||||
{t("vencord.logs.clearAll")}
|
||||
</Button>
|
||||
</>
|
||||
)}
|
||||
|
|
@ -577,7 +574,7 @@ function ChangelogContent() {
|
|||
color: "var(--text-muted)",
|
||||
}}
|
||||
>
|
||||
Make sure you have an internet connection and try again.
|
||||
{t("vencord.settings.changelog.checkYourInternet")}
|
||||
</Paragraph>
|
||||
</ErrorCard>
|
||||
)}
|
||||
|
|
@ -588,7 +585,7 @@ function ChangelogContent() {
|
|||
{hasCurrentChanges ? (
|
||||
<div className="vc-changelog-current">
|
||||
<Heading className={Margins.bottom8}>
|
||||
Recent Changes
|
||||
{t("vencord.settings.changelog.recentChanges")}
|
||||
</Heading>
|
||||
|
||||
{/* New Plugins Section */}
|
||||
|
|
@ -607,7 +604,7 @@ function ChangelogContent() {
|
|||
{updatedPlugins.length > 0 && (
|
||||
<div className={Margins.bottom16}>
|
||||
<Heading className={Margins.bottom8}>
|
||||
Updated Plugins ({updatedPlugins.length})
|
||||
{t("vencord.settings.changelog.updatedPluginsCount", { plugins: updatedPlugins.length })}
|
||||
</Heading>
|
||||
<NewPluginsCompact newPlugins={updatedPlugins} />
|
||||
</div>
|
||||
|
|
@ -617,8 +614,7 @@ function ChangelogContent() {
|
|||
{changelog.length > 0 && (
|
||||
<div>
|
||||
<Heading className={Margins.bottom8}>
|
||||
Code Changes ({changelog.length}{" "}
|
||||
{changelog.length === 1 ? "commit" : "commits"})
|
||||
{t("vencord.settings.changelog.codeChanges", { count: changelog.length })}
|
||||
</Heading>
|
||||
<div className="vc-changelog-commits-list">
|
||||
{changelog.map(entry => (
|
||||
|
|
@ -638,9 +634,7 @@ function ChangelogContent() {
|
|||
!error && (
|
||||
<Card className="vc-changelog-empty">
|
||||
<Paragraph>
|
||||
No commits available ahead of your current version.
|
||||
Click "Fetch from Repository" to check for new
|
||||
changes.
|
||||
{t("vencord.settings.changelog.emptyChangelog")}
|
||||
</Paragraph>
|
||||
</Card>
|
||||
)
|
||||
|
|
@ -654,12 +648,10 @@ function ChangelogContent() {
|
|||
style={{ marginBottom: "1em" }}
|
||||
/>
|
||||
<Heading className={Margins.bottom8}>
|
||||
Update Logs ({changelogHistory.length}{" "}
|
||||
{changelogHistory.length === 1 ? "log" : "logs"})
|
||||
{t("vencord.settings.changelog.updateLogs", { count: changelogHistory.length })}
|
||||
</Heading>
|
||||
<Paragraph className={Margins.bottom16}>
|
||||
Previous update sessions with their commit history and
|
||||
plugin changes.
|
||||
{t("vencord.settings.changelog.previousSessions")}
|
||||
</Paragraph>
|
||||
|
||||
<div className="vc-changelog-history-list">
|
||||
|
|
@ -673,11 +665,11 @@ function ChangelogContent() {
|
|||
onToggleExpand={() => toggleLogExpanded(log.id)}
|
||||
onClearLog={logId => {
|
||||
Alerts.show({
|
||||
title: "Clear Log",
|
||||
body: "Are you sure you would like to clear this log? This can't be undone.",
|
||||
confirmText: "Clear Log",
|
||||
title: t("vencord.logs.clearLog"),
|
||||
body: t("vencord.logs.clearLogConfirmation"),
|
||||
confirmText: t("vencord.logs.clearLog"),
|
||||
confirmColor: "danger",
|
||||
cancelText: "Cancel",
|
||||
cancelText: t("vencord.logs.cancel"),
|
||||
onConfirm: async () => {
|
||||
await clearIndividualLog(logId);
|
||||
await loadChangelogHistory();
|
||||
|
|
@ -691,7 +683,7 @@ function ChangelogContent() {
|
|||
),
|
||||
);
|
||||
Toasts.show({
|
||||
message: "Log has been cleared",
|
||||
message: t("vencord.logs.logCleared"),
|
||||
id: Toasts.genId(),
|
||||
type: Toasts.Type.SUCCESS,
|
||||
options: {
|
||||
|
|
@ -713,10 +705,10 @@ function ChangelogContent() {
|
|||
|
||||
function ChangelogTab() {
|
||||
return (
|
||||
<SettingsTab title="Changelog">
|
||||
<SettingsTab title={t("vencord.settings.changelog.title")}>
|
||||
<ChangelogContent />
|
||||
</SettingsTab>
|
||||
);
|
||||
}
|
||||
|
||||
export default wrapTab(ChangelogTab, "Changelog");
|
||||
export default wrapTab(ChangelogTab, t("vencord.settings.changelog.title"));
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ import { classNameFactory } from "@api/Styles";
|
|||
import ErrorBoundary from "@components/ErrorBoundary";
|
||||
import { HeadingPrimary } from "@components/Heading";
|
||||
import { Link } from "@components/Link";
|
||||
import { Paragraph } from "@components/Paragraph";
|
||||
import { EquicordDevsById, VencordDevsById } from "@utils/constants";
|
||||
import { fetchUserProfile } from "@utils/discord";
|
||||
import { classes } from "@utils/misc";
|
||||
|
|
@ -94,16 +95,20 @@ function ContributorModal({ user }: { user: User; }) {
|
|||
</div>
|
||||
|
||||
{plugins.length ? (
|
||||
<Translate
|
||||
i18nKey="vencord.settings.plugins.contributorModal.contributorInfo.plugins"
|
||||
variables={{ count: plugins.length }}>
|
||||
This person has {ContributedHyperLink} to some plugins!
|
||||
</Translate>
|
||||
<Paragraph>
|
||||
<Translate
|
||||
i18nKey="vencord.settings.plugins.contributorModal.contributorInfo.plugins"
|
||||
variables={{ count: plugins.length }}>
|
||||
This person has {ContributedHyperLink} to some plugins!
|
||||
</Translate>
|
||||
</Paragraph>
|
||||
) : (
|
||||
<Translate i18nKey="vencord.settings.plugins.contributorModal.contributorInfo.noPlugins">
|
||||
This person has not made any plugins. They likely {ContributedHyperLink}
|
||||
to Vencord in other ways!
|
||||
</Translate>
|
||||
<Paragraph >
|
||||
<Translate i18nKey="vencord.settings.plugins.contributorModal.contributorInfo.noPlugins">
|
||||
This person has not made any plugins. They likely {ContributedHyperLink}
|
||||
to Equicord in other ways!
|
||||
</Translate>
|
||||
</Paragraph >
|
||||
)}
|
||||
|
||||
{!!plugins.length && (
|
||||
|
|
|
|||
|
|
@ -334,11 +334,14 @@ function DonateButtonComponent() {
|
|||
<DonateButton
|
||||
look={Button.Looks.FILLED}
|
||||
color={Button.Colors.TRANSPARENT}
|
||||
style={{ marginTop: "1em" }} />
|
||||
style={{ marginTop: "1em" }}
|
||||
link="https://github.com/sponsors/thororen1234"
|
||||
/>
|
||||
<InviteButton
|
||||
look={Button.Looks.FILLED}
|
||||
color={Button.Colors.TRANSPARENT}
|
||||
style={{ marginTop: "1em" }} />
|
||||
style={{ marginTop: "1em" }}
|
||||
/>
|
||||
</Flex>
|
||||
);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue