mirror of
https://github.com/Equicord/Equicord.git
synced 2025-06-09 06:33:03 -04:00
Merge remote-tracking branch 'upstream/dev' into dev
This commit is contained in:
commit
fb0a73c4fe
5 changed files with 25 additions and 17 deletions
|
@ -20,6 +20,7 @@ import { Devs } from "@utils/constants";
|
||||||
import { getCurrentChannel, getCurrentGuild } from "@utils/discord";
|
import { getCurrentChannel, getCurrentGuild } from "@utils/discord";
|
||||||
import { runtimeHashMessageKey } from "@utils/intlHash";
|
import { runtimeHashMessageKey } from "@utils/intlHash";
|
||||||
import { SYM_LAZY_CACHED, SYM_LAZY_GET } from "@utils/lazy";
|
import { SYM_LAZY_CACHED, SYM_LAZY_GET } from "@utils/lazy";
|
||||||
|
import { ModalAPI } from "@utils/modal";
|
||||||
import { relaunch } from "@utils/native";
|
import { relaunch } from "@utils/native";
|
||||||
import { canonicalizeMatch, canonicalizeReplace, canonicalizeReplacement } from "@utils/patches";
|
import { canonicalizeMatch, canonicalizeReplace, canonicalizeReplacement } from "@utils/patches";
|
||||||
import definePlugin, { PluginNative, StartAt } from "@utils/types";
|
import definePlugin, { PluginNative, StartAt } from "@utils/types";
|
||||||
|
@ -144,6 +145,8 @@ function makeShortcuts() {
|
||||||
me: { getter: () => Common.UserStore.getCurrentUser(), preload: false },
|
me: { getter: () => Common.UserStore.getCurrentUser(), preload: false },
|
||||||
meId: { getter: () => Common.UserStore.getCurrentUser().id, preload: false },
|
meId: { getter: () => Common.UserStore.getCurrentUser().id, preload: false },
|
||||||
messages: { getter: () => Common.MessageStore.getMessages(Common.SelectedChannelStore.getChannelId()), preload: false },
|
messages: { getter: () => Common.MessageStore.getMessages(Common.SelectedChannelStore.getChannelId()), preload: false },
|
||||||
|
openModal: { getter: () => ModalAPI.openModal },
|
||||||
|
openModalLazy: { getter: () => ModalAPI.openModalLazy },
|
||||||
|
|
||||||
Stores: {
|
Stores: {
|
||||||
getter: () => Object.fromEntries(
|
getter: () => Object.fromEntries(
|
||||||
|
|
|
@ -30,13 +30,13 @@ export default definePlugin({
|
||||||
{
|
{
|
||||||
find: ".removeMosaicItemHoverButton),",
|
find: ".removeMosaicItemHoverButton),",
|
||||||
replacement: {
|
replacement: {
|
||||||
match: /\.nonMediaMosaicItem\]:.{0,40}children:\[(?<=showDownload:(\i).+?isVisualMediaType:(\i).+?)/,
|
match: /\.nonMediaMosaicItem\]:.{0,40}children:\i.slice\(\i\)(?<=showDownload:(\i).+?isVisualMediaType:(\i).+?)/,
|
||||||
replace: "$&$1&&$2&&$self.renderPiPButton(),"
|
replace: (m, showDownload, isVisualMediaType) => `${m}.unshift(${showDownload}&&${isVisualMediaType}&&$self.PictureInPictureButton())`
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|
||||||
renderPiPButton: ErrorBoundary.wrap(() => {
|
PictureInPictureButton: ErrorBoundary.wrap(() => {
|
||||||
return (
|
return (
|
||||||
<Tooltip text="Toggle Picture in Picture">
|
<Tooltip text="Toggle Picture in Picture">
|
||||||
{tooltipProps => (
|
{tooltipProps => (
|
||||||
|
|
|
@ -18,6 +18,7 @@
|
||||||
|
|
||||||
import "./spotifyStyles.css";
|
import "./spotifyStyles.css";
|
||||||
|
|
||||||
|
import { Settings } from "@api/Settings";
|
||||||
import { Flex } from "@components/Flex";
|
import { Flex } from "@components/Flex";
|
||||||
import { ImageIcon, LinkIcon, OpenExternalIcon } from "@components/Icons";
|
import { ImageIcon, LinkIcon, OpenExternalIcon } from "@components/Icons";
|
||||||
import { debounce } from "@shared/debounce";
|
import { debounce } from "@shared/debounce";
|
||||||
|
@ -130,7 +131,9 @@ function Controls() {
|
||||||
>
|
>
|
||||||
<Shuffle />
|
<Shuffle />
|
||||||
</Button>
|
</Button>
|
||||||
<Button onClick={() => SpotifyStore.prev()}>
|
<Button onClick={() => {
|
||||||
|
Settings.plugins.SpotifyControls.previousButtonRestartsTrack && SpotifyStore.position > 3000 ? SpotifyStore.seek(0) : SpotifyStore.prev();
|
||||||
|
}}>
|
||||||
<SkipPrev />
|
<SkipPrev />
|
||||||
</Button>
|
</Button>
|
||||||
<Button onClick={() => SpotifyStore.setPlaying(!isPlaying)}>
|
<Button onClick={() => SpotifyStore.setPlaying(!isPlaying)}>
|
||||||
|
|
|
@ -44,6 +44,11 @@ export default definePlugin({
|
||||||
type: OptionType.BOOLEAN,
|
type: OptionType.BOOLEAN,
|
||||||
description: "Open Spotify URIs instead of Spotify URLs. Will only work if you have Spotify installed and might not work on all platforms",
|
description: "Open Spotify URIs instead of Spotify URLs. Will only work if you have Spotify installed and might not work on all platforms",
|
||||||
default: false
|
default: false
|
||||||
|
},
|
||||||
|
previousButtonRestartsTrack: {
|
||||||
|
type: OptionType.BOOLEAN,
|
||||||
|
description: "Restart currently playing track when pressing the previous button if playtime is >3s",
|
||||||
|
default: true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
patches: [
|
patches: [
|
||||||
|
|
|
@ -141,35 +141,32 @@ export const ModalContent = LazyComponent(() => Modals.ModalContent);
|
||||||
export const ModalFooter = LazyComponent(() => Modals.ModalFooter);
|
export const ModalFooter = LazyComponent(() => Modals.ModalFooter);
|
||||||
export const ModalCloseButton = LazyComponent(() => Modals.ModalCloseButton);
|
export const ModalCloseButton = LazyComponent(() => Modals.ModalCloseButton);
|
||||||
|
|
||||||
const ModalAPI = findByPropsLazy("openModalLazy");
|
export const ModalAPI = findByPropsLazy("openModalLazy");
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Wait for the render promise to resolve, then open a modal with it.
|
* Wait for the render promise to resolve, then open a modal with it.
|
||||||
* This is equivalent to render().then(openModal)
|
* This is equivalent to render().then(openModal)
|
||||||
* You should use the Modal components exported by this file
|
* You should use the Modal components exported by this file
|
||||||
*/
|
*/
|
||||||
export function openModalLazy(render: () => Promise<RenderFunction>, options?: ModalOptions & { contextKey?: string; }): Promise<string> {
|
export const openModalLazy: (render: () => Promise<RenderFunction>, options?: ModalOptions & { contextKey?: string; }) => Promise<string>
|
||||||
return ModalAPI.openModalLazy(render, options);
|
= proxyLazyWebpack(() => ModalAPI.openModalLazy);
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Open a Modal with the given render function.
|
* Open a Modal with the given render function.
|
||||||
* You should use the Modal components exported by this file
|
* You should use the Modal components exported by this file
|
||||||
*/
|
*/
|
||||||
export function openModal(render: RenderFunction, options?: ModalOptions, contextKey?: string): string {
|
export const openModal: (render: RenderFunction, options?: ModalOptions, contextKey?: string) => string
|
||||||
return ModalAPI.openModal(render, options, contextKey);
|
= proxyLazyWebpack(() => ModalAPI.openModal);
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Close a modal by its key
|
* Close a modal by its key
|
||||||
*/
|
*/
|
||||||
export function closeModal(modalKey: string, contextKey?: string): void {
|
export const closeModal: (modalKey: string, contextKey?: string) => void
|
||||||
return ModalAPI.closeModal(modalKey, contextKey);
|
= proxyLazyWebpack(() => ModalAPI.closeModal);
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Close all open modals
|
* Close all open modals
|
||||||
*/
|
*/
|
||||||
export function closeAllModals(): void {
|
export const closeAllModals: () => void
|
||||||
return ModalAPI.closeAllModals();
|
= proxyLazyWebpack(() => ModalAPI.closeAllModals);
|
||||||
}
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue