diff --git a/.editorconfig b/.editorconfig
index aa72f12..49a9770 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -16,7 +16,7 @@ insert_final_newline = unset
trim_trailing_whitespace = unset
indent_size = unset
-[{.*,secrets,users/infinidoge/config/powercord}/**]
+[{.*,secrets}/**]
end_of_line = unset
insert_final_newline = unset
trim_trailing_whitespace = unset
diff --git a/.gitattributes b/.gitattributes
index c2e734c..660acec 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1,2 +1 @@
flake.lock merge=ignore
-users/infinidoge/config/powercord/PinDMs.json merge=ignore
diff --git a/flake.nix b/flake.nix
index 0f4447b..0d9e845 100644
--- a/flake.nix
+++ b/flake.nix
@@ -41,10 +41,6 @@
nixos-wsl.url = "github:nix-community/NixOS-WSL";
# --- Domain-Specific Flake Inputs
- # # --- Powercord
- powercord-setup.url = "path:/etc/nixos/subflakes/powercord";
- powercord-setup.inputs.nixpkgs.follows = "latest";
-
# # --- Minecraft
nix-minecraft.url = "github:Infinidoge/nix-minecraft/develop";
nix-minecraft.inputs.nixpkgs.follows = "nixos";
diff --git a/overlays/overrides.nix b/overlays/overrides.nix
index 12b55bd..5ec02d6 100644
--- a/overlays/overrides.nix
+++ b/overlays/overrides.nix
@@ -2,9 +2,6 @@ channels: final: prev: {
__dontExport = true; # overrides clutter up actual creations
- # Pin discord-canary version for powercord
- # powercord = prev.powercord.override { inherit (channels.fork) discord-canary; };
-
inherit (channels.latest)
discord-canary
polymc
diff --git a/subflakes/powercord/flake.lock b/subflakes/powercord/flake.lock
deleted file mode 100644
index 81f3a97..0000000
--- a/subflakes/powercord/flake.lock
+++ /dev/null
@@ -1,1139 +0,0 @@
-{
- "nodes": {
- "discord-Custom-Volume-Range": {
- "flake": false,
- "locked": {
- "lastModified": 1628672321,
- "narHash": "sha256-Ii8nvccZFszmdAoJqhgHqfESbzhvqr3wfCerMeq/kso=",
- "owner": "PandaDriver156",
- "repo": "Custom-Volume-Range",
- "rev": "e941faabc245644ef8d5f5942da3ac218b4315f7",
- "type": "github"
- },
- "original": {
- "owner": "PandaDriver156",
- "repo": "Custom-Volume-Range",
- "type": "github"
- }
- },
- "discord-Discolored": {
- "flake": false,
- "locked": {
- "lastModified": 1649415384,
- "narHash": "sha256-kuYxNwiOo1MBIthL+hafcsg5xiJ0c9l2Kzzync4l4tg=",
- "owner": "NYRI4",
- "repo": "Discolored",
- "rev": "96f59f706a020c60ca9113e1a480e9bee7bbdcd7",
- "type": "github"
- },
- "original": {
- "owner": "NYRI4",
- "repo": "Discolored",
- "type": "github"
- }
- },
- "discord-In-app-notifs": {
- "flake": false,
- "locked": {
- "lastModified": 1641514547,
- "narHash": "sha256-lWPArT7cTG0MFfPyiPIojA3UXfvUd19tjmc1Tsu863g=",
- "owner": "BenSegal855",
- "repo": "In-app-notifs",
- "rev": "3c48183cfc9a026bc85cb8db3b4728b9a43ba83a",
- "type": "github"
- },
- "original": {
- "owner": "BenSegal855",
- "repo": "In-app-notifs",
- "type": "github"
- }
- },
- "discord-NSFW-tags": {
- "flake": false,
- "locked": {
- "lastModified": 1632352862,
- "narHash": "sha256-qC+qd4Tvm+SZNyPrq0OUeTiEQ62hMp+j5EIuAyfB71g=",
- "owner": "E-boi",
- "repo": "NSFW-tags",
- "rev": "632a53bb5ec0787d883327f33a71bc9f0d1baa1f",
- "type": "github"
- },
- "original": {
- "owner": "E-boi",
- "repo": "NSFW-tags",
- "type": "github"
- }
- },
- "discord-PowercordTwemojiEverywhere": {
- "flake": false,
- "locked": {
- "lastModified": 1622329962,
- "narHash": "sha256-LjKD3yeaZOsIMImxWUgmRb/dpAC0XFOoP1P/5kURMLs=",
- "owner": "VenPlugs",
- "repo": "PowercordTwemojiEverywhere",
- "rev": "76ac2c69d7ddb47170caa53002e30dd779033dab",
- "type": "github"
- },
- "original": {
- "owner": "VenPlugs",
- "repo": "PowercordTwemojiEverywhere",
- "type": "github"
- }
- },
- "discord-Quick-Bot-Invite": {
- "flake": false,
- "locked": {
- "lastModified": 1604418765,
- "narHash": "sha256-1ep6esEBeDHo0Xx/8Ai15u3CgEbaD2YTMEnW1L/ocPk=",
- "owner": "A-Trash-Coder",
- "repo": "Quick-Bot-Invite",
- "rev": "4f1684d66ab711dc5b400e24a3c6660a0df07753",
- "type": "github"
- },
- "original": {
- "owner": "A-Trash-Coder",
- "repo": "Quick-Bot-Invite",
- "type": "github"
- }
- },
- "discord-Quick-Channel-Mute": {
- "flake": false,
- "locked": {
- "lastModified": 1653595190,
- "narHash": "sha256-Bp4JwZ857B6UGFOHiutp5fw7uBGC1a0DkRLkguI/+xA=",
- "owner": "A-Trash-Coder",
- "repo": "Quick-Channel-Mute",
- "rev": "d9743e040523c1a394832b7b1729ca2fda5f99ae",
- "type": "github"
- },
- "original": {
- "owner": "A-Trash-Coder",
- "repo": "Quick-Channel-Mute",
- "type": "github"
- }
- },
- "discord-SnowflakeInfo": {
- "flake": false,
- "locked": {
- "lastModified": 1608416482,
- "narHash": "sha256-smeexgO83nNzmFVUx3AW4Wd10SSpB0oHMbWcIeXpw40=",
- "owner": "NurMarvin",
- "repo": "SnowflakeInfo",
- "rev": "9e34cfa8e50d9083c66d0ee7149f6395a8e8847e",
- "type": "github"
- },
- "original": {
- "owner": "NurMarvin",
- "repo": "SnowflakeInfo",
- "type": "github"
- }
- },
- "discord-Unindent": {
- "flake": false,
- "locked": {
- "lastModified": 1622506264,
- "narHash": "sha256-Cyf28MplOiROqwlJ745CQ/PUMH0TcE/pRxN7Y58i9SA=",
- "owner": "VenPlugs",
- "repo": "Unindent",
- "rev": "006ea845dff3e54454e6f55256083813ffc83c32",
- "type": "github"
- },
- "original": {
- "owner": "VenPlugs",
- "repo": "Unindent",
- "type": "github"
- }
- },
- "discord-badges-everywhere": {
- "flake": false,
- "locked": {
- "lastModified": 1641679991,
- "narHash": "sha256-yYVFicbo7SVmQoOteI1n7NRvVLZ0oLK3+j/mTQK31YU=",
- "owner": "powercord-community",
- "repo": "badges-everywhere",
- "rev": "da5bbaa5764bf907a457cb701f5208adf4c8f2bb",
- "type": "github"
- },
- "original": {
- "owner": "powercord-community",
- "repo": "badges-everywhere",
- "type": "github"
- }
- },
- "discord-better-connections": {
- "flake": false,
- "locked": {
- "lastModified": 1630183822,
- "narHash": "sha256-2T6ouo0RdTcCo82ShB1jBKXlzI+ZORi6dXchkgfxas8=",
- "owner": "AAGaming00",
- "repo": "better-connections",
- "rev": "89f3c233cf3fa2ef8b1316ad75cff01629282650",
- "type": "github"
- },
- "original": {
- "owner": "AAGaming00",
- "repo": "better-connections",
- "type": "github"
- }
- },
- "discord-better-folders": {
- "flake": false,
- "locked": {
- "lastModified": 1656078577,
- "narHash": "sha256-KvTRDovNwOEeHPdlQqiOZjuZhk1N14cSrVTT46L0O2o=",
- "owner": "Juby210",
- "repo": "better-folders",
- "rev": "e0e63285ab020e1e215504629ba684ae5755e828",
- "type": "github"
- },
- "original": {
- "owner": "Juby210",
- "repo": "better-folders",
- "type": "github"
- }
- },
- "discord-better-replies": {
- "flake": false,
- "locked": {
- "lastModified": 1647695491,
- "narHash": "sha256-Wru9PZIDl9yyhbdCK96jTMu/vDtCT3puke496ORSlv4=",
- "owner": "cyyynthia",
- "repo": "better-replies",
- "rev": "c3e5465dd761599ed00f77cc4f6e47fef397102b",
- "type": "github"
- },
- "original": {
- "owner": "cyyynthia",
- "repo": "better-replies",
- "type": "github"
- }
- },
- "discord-better-settings": {
- "flake": false,
- "locked": {
- "lastModified": 1648609106,
- "narHash": "sha256-Dfaw6Ec63oZvYCCKni9fDFzAQ89AOkmmpxsk1WRD9yU=",
- "owner": "mr-miner1",
- "repo": "better-settings",
- "rev": "48ac8c7365a0b4b71d2e11904f1824a838ba0944",
- "type": "github"
- },
- "original": {
- "owner": "mr-miner1",
- "repo": "better-settings",
- "type": "github"
- }
- },
- "discord-better-status-indicators": {
- "flake": false,
- "locked": {
- "lastModified": 1653550870,
- "narHash": "sha256-3UZtBBGNfhQZJP7Q4NptIALG0rSNe2WwabGQ5xoG0qo=",
- "owner": "GriefMoDz",
- "repo": "better-status-indicators",
- "rev": "0186a1664a00b9438b94747b2a438a642cf25856",
- "type": "github"
- },
- "original": {
- "owner": "GriefMoDz",
- "repo": "better-status-indicators",
- "type": "github"
- }
- },
- "discord-better-threads": {
- "flake": false,
- "locked": {
- "lastModified": 1627600454,
- "narHash": "sha256-jHCnq12I344uL3OlyDbDN8xlLUo1mFBJmZmNuoXlnOI=",
- "owner": "NurMarvin",
- "repo": "better-threads",
- "rev": "ad929d1b076ae13e7a4405100046ec730c5453fe",
- "type": "github"
- },
- "original": {
- "owner": "NurMarvin",
- "repo": "better-threads",
- "type": "github"
- }
- },
- "discord-betterinvites": {
- "flake": false,
- "locked": {
- "lastModified": 1649112862,
- "narHash": "sha256-KOphq69lKEmxiCsPDSfbwGaRwSrXBtxMv0j4Qarn7RE=",
- "owner": "12944qwerty",
- "repo": "betterinvites",
- "rev": "43492ee100796a415a01c8d3af394ac372b45b4d",
- "type": "github"
- },
- "original": {
- "owner": "12944qwerty",
- "repo": "betterinvites",
- "type": "github"
- }
- },
- "discord-block-messages": {
- "flake": false,
- "locked": {
- "lastModified": 1605114152,
- "narHash": "sha256-5lJpRvNipGCrgRqgWGUqD2tgFepm1V9FohwzmnylBQE=",
- "owner": "cyyynthia",
- "repo": "block-messages",
- "rev": "abc8a39ed4c50fa3086730c707a7c87597209231",
- "type": "github"
- },
- "original": {
- "owner": "cyyynthia",
- "repo": "block-messages",
- "type": "github"
- }
- },
- "discord-channel-typing": {
- "flake": false,
- "locked": {
- "lastModified": 1634895849,
- "narHash": "sha256-wlbzg2zzFcwBGCa90DAKUEAtytQBc8kYAjzXGq1J6AM=",
- "owner": "powercord-community",
- "repo": "channel-typing",
- "rev": "8e41b085410a5bb72ddf9f372c8957eed6d2cb82",
- "type": "github"
- },
- "original": {
- "owner": "powercord-community",
- "repo": "channel-typing",
- "type": "github"
- }
- },
- "discord-copy-avatar-url": {
- "flake": false,
- "locked": {
- "lastModified": 1623532926,
- "narHash": "sha256-QXJgyHfqeGKO+2eHMk0/WvMcfDwMqw4ymPlArNlcpRo=",
- "owner": "21Joakim",
- "repo": "copy-avatar-url",
- "rev": "bac9d2e9c1b9c153b5842934e6a89fe548452c58",
- "type": "github"
- },
- "original": {
- "owner": "21Joakim",
- "repo": "copy-avatar-url",
- "type": "github"
- }
- },
- "discord-copy-raw-message": {
- "flake": false,
- "locked": {
- "lastModified": 1647266717,
- "narHash": "sha256-AmZquaFo0ifk0nKJztD0URmsPnQK4nSVO8p72hhUqO0=",
- "owner": "mic0ishere",
- "repo": "copy-raw-message",
- "rev": "34c0b1de315403f61b3050f705d2f5c271a3dd28",
- "type": "github"
- },
- "original": {
- "owner": "mic0ishere",
- "repo": "copy-raw-message",
- "type": "github"
- }
- },
- "discord-copy-role-color": {
- "flake": false,
- "locked": {
- "lastModified": 1618396251,
- "narHash": "sha256-ucgPshBCGFBRSkJ3/FCpbuLcZT9e2kqIHPJevxOZk5M=",
- "owner": "Antonio32A",
- "repo": "copy-role-color",
- "rev": "0daab6c9e0a851a364cd1b2177d82304f5344507",
- "type": "github"
- },
- "original": {
- "owner": "Antonio32A",
- "repo": "copy-role-color",
- "type": "github"
- }
- },
- "discord-css-toggler": {
- "flake": false,
- "locked": {
- "lastModified": 1644453320,
- "narHash": "sha256-GhyC+Cgm/rSFzLPMd6opHsD1LqvMIk6rOGJx9Lb1s+c=",
- "owner": "12944qwerty",
- "repo": "css-toggler",
- "rev": "3ca4a150a7800d52e0455f9716ec1df28a236d39",
- "type": "github"
- },
- "original": {
- "owner": "12944qwerty",
- "repo": "css-toggler",
- "type": "github"
- }
- },
- "discord-custom-timestamps": {
- "flake": false,
- "locked": {
- "lastModified": 1639189754,
- "narHash": "sha256-RRjhgQV+kPuPMKusp+RqYvX4wun6dHVwUOxyYbr0bQ0=",
- "owner": "TaiAurori",
- "repo": "custom-timestamps",
- "rev": "207197e44bff06c14d91020d42511da15affe7d5",
- "type": "github"
- },
- "original": {
- "owner": "TaiAurori",
- "repo": "custom-timestamps",
- "type": "github"
- }
- },
- "discord-cutecord": {
- "flake": false,
- "locked": {
- "lastModified": 1650678770,
- "narHash": "sha256-qh6xQhTnaKJRe/jQ9Frj9zGQD7Q+EdYbVFVLnPgqWpc=",
- "owner": "powercord-community",
- "repo": "cutecord",
- "rev": "11b801480443431cde91c418489248fc2cbf83a8",
- "type": "github"
- },
- "original": {
- "owner": "powercord-community",
- "repo": "cutecord",
- "type": "github"
- }
- },
- "discord-discord-status": {
- "flake": false,
- "locked": {
- "lastModified": 1617586260,
- "narHash": "sha256-0dWmojr9mqOunZ3wYlw8jPZomkpFEDm6Ml9UiQUJnGs=",
- "owner": "KableKo",
- "repo": "discord-status",
- "rev": "a12ff027af7eeef3be9346c800a42a54f84b0d86",
- "type": "github"
- },
- "original": {
- "owner": "KableKo",
- "repo": "discord-status",
- "type": "github"
- }
- },
- "discord-dm-typing-indicator": {
- "flake": false,
- "locked": {
- "lastModified": 1636586273,
- "narHash": "sha256-qkrzocT7thdzbW+cmFbY0Cbu2sx2GX7AU/CS4Kzxaq8=",
- "owner": "zt64",
- "repo": "dm-typing-indicator",
- "rev": "3622db26bcfa6f949a49c41a4d820a23401084b2",
- "type": "github"
- },
- "original": {
- "owner": "zt64",
- "repo": "dm-typing-indicator",
- "type": "github"
- }
- },
- "discord-guild-profile": {
- "flake": false,
- "locked": {
- "lastModified": 1642440449,
- "narHash": "sha256-SySCuI/NwhlfzpCPJgqSOUdb1zIN3Fp6xcG1D16l1ks=",
- "owner": "NurMarvin",
- "repo": "guild-profile",
- "rev": "89e59764112844d4dc51c97aa4e58978ec7436ae",
- "type": "github"
- },
- "original": {
- "owner": "NurMarvin",
- "repo": "guild-profile",
- "type": "github"
- }
- },
- "discord-kaomoji": {
- "flake": false,
- "locked": {
- "lastModified": 1644171071,
- "narHash": "sha256-tzs987zewEyCHX+v6i3kpgtxKESpJnRjFj/nd0+TBys=",
- "owner": "davidcralph",
- "repo": "kaomoji",
- "rev": "8eb35c661b2169d775066f9a07d778af664ed1f0",
- "type": "github"
- },
- "original": {
- "owner": "davidcralph",
- "repo": "kaomoji",
- "type": "github"
- }
- },
- "discord-mention-cache-fix": {
- "flake": false,
- "locked": {
- "lastModified": 1656435391,
- "narHash": "sha256-8iJtCHwUuooQ0WiCsb2pYXpYTHhftmmAd2+UiTnLa8w=",
- "owner": "asportnoy",
- "repo": "mention-cache-fix",
- "rev": "66c918b976cb8edccd719a5b1bbb3a3c217b8fa3",
- "type": "github"
- },
- "original": {
- "owner": "asportnoy",
- "repo": "mention-cache-fix",
- "type": "github"
- }
- },
- "discord-message-link-embed": {
- "flake": false,
- "locked": {
- "lastModified": 1634981173,
- "narHash": "sha256-AB3QgVqHv6Ybt6V9kkeXTLB/jcA+51UWCTfzbIwdyZU=",
- "owner": "Juby210",
- "repo": "message-link-embed",
- "rev": "eb41fed1e749ffda391f9b0b0c8e2991175b1a57",
- "type": "github"
- },
- "original": {
- "owner": "Juby210",
- "repo": "message-link-embed",
- "type": "github"
- }
- },
- "discord-online-friends-count": {
- "flake": false,
- "locked": {
- "lastModified": 1648166716,
- "narHash": "sha256-Vvm33WI5MX5qU5IpqI142EsSNq0wx4icAymCAI3utVY=",
- "owner": "GriefMoDz",
- "repo": "online-friends-count",
- "rev": "b82d4a15e1ba410192f24c9f5eeab65b0d7fc151",
- "type": "github"
- },
- "original": {
- "owner": "GriefMoDz",
- "repo": "online-friends-count",
- "type": "github"
- }
- },
- "discord-permission-viewer": {
- "flake": false,
- "locked": {
- "lastModified": 1649930173,
- "narHash": "sha256-5Z2s5mPHl9pjqH6ZENoyGcJoiNTgItMkE4d+ofnqYPA=",
- "owner": "powercord-community",
- "repo": "permission-viewer",
- "rev": "b96e87d4138cc6ffdb1cfbbf53135ab36d6deec2",
- "type": "github"
- },
- "original": {
- "owner": "powercord-community",
- "repo": "permission-viewer",
- "type": "github"
- }
- },
- "discord-powercord-LinkChannels": {
- "flake": false,
- "locked": {
- "lastModified": 1623970704,
- "narHash": "sha256-C95v9S0SCErv1BMFmMb4Pww7o4B/RASjASgYmWxh4WQ=",
- "owner": "E-boi",
- "repo": "powercord-LinkChannels",
- "rev": "6d7040ef6c04f2fcbe7dacafaa6638776ba9e72e",
- "type": "github"
- },
- "original": {
- "owner": "E-boi",
- "repo": "powercord-LinkChannels",
- "type": "github"
- }
- },
- "discord-powercord-message-tooltips": {
- "flake": false,
- "locked": {
- "lastModified": 1642200248,
- "narHash": "sha256-OcqS2rMv/T3F0wbXVNwwsWH57AJ0mIK7C/YVxJ+5pbM=",
- "owner": "lorencerri",
- "repo": "powercord-message-tooltips",
- "rev": "6c1e15946dd3588e7c8841f88bb8e6e40a58b031",
- "type": "github"
- },
- "original": {
- "owner": "lorencerri",
- "repo": "powercord-message-tooltips",
- "type": "github"
- }
- },
- "discord-powercord-mute-folder": {
- "flake": false,
- "locked": {
- "lastModified": 1642350595,
- "narHash": "sha256-fCDuzzA4HnAiq+maBTAwjI/SUh2kXxXlmQXQc71BUvA=",
- "owner": "notsapinho",
- "repo": "powercord-mute-folder",
- "rev": "7d3d1208583dcc114c1cbbcb02ae212d0af578f0",
- "type": "github"
- },
- "original": {
- "owner": "notsapinho",
- "repo": "powercord-mute-folder",
- "type": "github"
- }
- },
- "discord-powercord-ownertags": {
- "flake": false,
- "locked": {
- "lastModified": 1653395542,
- "narHash": "sha256-c298D4ZYx2hwyt3ktA/LAjPLx5SeWs5tMQgqe4vqHzs=",
- "owner": "Puyodead1",
- "repo": "powercord-ownertag",
- "rev": "e18cb405bc66a5abc5c0a6d977c6f811234fce24",
- "type": "github"
- },
- "original": {
- "owner": "Puyodead1",
- "repo": "powercord-ownertag",
- "type": "github"
- }
- },
- "discord-powercord-pindms": {
- "flake": false,
- "locked": {
- "lastModified": 1652881953,
- "narHash": "sha256-6d2F0WWtCFE8kyt5Dpoa9NHjlrdkOqcJMf2qUNSdNSg=",
- "owner": "Bricklou",
- "repo": "powercord-pindms",
- "rev": "4020cc10a50d9c730f83d7f3f085ec1e58daf4d5",
- "type": "github"
- },
- "original": {
- "owner": "Bricklou",
- "repo": "powercord-pindms",
- "type": "github"
- }
- },
- "discord-powercord-reverse-image-search": {
- "flake": false,
- "locked": {
- "lastModified": 1643778410,
- "narHash": "sha256-9cbPhGbMVuXrArVCorv9NzfQNYAEHlfdIrItOzJMNck=",
- "owner": "lorencerri",
- "repo": "powercord-reverse-image-search",
- "rev": "9a13f7d78d647f58ebd6489e93cda9a536766919",
- "type": "github"
- },
- "original": {
- "owner": "lorencerri",
- "repo": "powercord-reverse-image-search",
- "type": "github"
- }
- },
- "discord-powercord-tone-indicators": {
- "flake": false,
- "locked": {
- "lastModified": 1655480246,
- "narHash": "sha256-kGhuX40u6N2os9bJTaVea8wP2Ko6EMFeCT9PXPShDm8=",
- "owner": "asportnoy",
- "repo": "powercord-tone-indicators",
- "rev": "546aa82154caa0590bdf2505bf00fb5a210d97e2",
- "type": "github"
- },
- "original": {
- "owner": "asportnoy",
- "repo": "powercord-tone-indicators",
- "type": "github"
- }
- },
- "discord-pronoundb-powercord": {
- "flake": false,
- "locked": {
- "lastModified": 1647695590,
- "narHash": "sha256-uT8daKWiJNAfFTeMByKPocLMIDdL5/OaUJ7Aw0PCtlA=",
- "owner": "cyyynthia",
- "repo": "pronoundb-powercord",
- "rev": "0ad35ab408216099ff71b45168c504cfb781b125",
- "type": "github"
- },
- "original": {
- "owner": "cyyynthia",
- "repo": "pronoundb-powercord",
- "type": "github"
- }
- },
- "discord-quick-delete-pc": {
- "flake": false,
- "locked": {
- "lastModified": 1645295933,
- "narHash": "sha256-v1un1qmqtITDwHVybxOLdgQ65AbxsC1luYZ83UDvpzs=",
- "owner": "the-cord-plug",
- "repo": "quick-delete-pc",
- "rev": "a80db0279876e048a791f02ba2c17f222e3a7f98",
- "type": "github"
- },
- "original": {
- "owner": "the-cord-plug",
- "repo": "quick-delete-pc",
- "type": "github"
- }
- },
- "discord-reddit-parser": {
- "flake": false,
- "locked": {
- "lastModified": 1621484518,
- "narHash": "sha256-tDvdY7i37uDDjFLprlBgLxWfQDJp+OMlLU3vVcpPrSE=",
- "owner": "Rodentman87",
- "repo": "reddit-parser",
- "rev": "47226db29bf6a0103b7ab66bd4835316ab98e09d",
- "type": "github"
- },
- "original": {
- "owner": "Rodentman87",
- "repo": "reddit-parser",
- "type": "github"
- }
- },
- "discord-relationship-notifier": {
- "flake": false,
- "locked": {
- "lastModified": 1650211510,
- "narHash": "sha256-xlh5mtsJLbaOWAlDTjIwbRfDJP1w4vUXqS3LDtkpTnY=",
- "owner": "discord-modifications",
- "repo": "relationships-notifier",
- "rev": "14d0eb9838ccb935be3a00a7fd0b14224ac6022b",
- "type": "github"
- },
- "original": {
- "owner": "discord-modifications",
- "repo": "relationships-notifier",
- "type": "github"
- }
- },
- "discord-remove-invite-from-user-context-menu": {
- "flake": false,
- "locked": {
- "lastModified": 1616452131,
- "narHash": "sha256-/3SiuzZvS4q8OcZpMvAsQV+ihKZTPYCsuH0csiP6AOg=",
- "owner": "SebbyLaw",
- "repo": "remove-invite-from-user-context-menu",
- "rev": "083984fed0dd01bb70647bb1cf767dd208be30e0",
- "type": "github"
- },
- "original": {
- "owner": "SebbyLaw",
- "repo": "remove-invite-from-user-context-menu",
- "type": "github"
- }
- },
- "discord-replace-timestamps-pc": {
- "flake": false,
- "locked": {
- "lastModified": 1653588088,
- "narHash": "sha256-sRUapSRz2Vh8RA4o2O9IlOwdeaTTK9D2twhztQiLj7Y=",
- "owner": "SpoonMcForky",
- "repo": "replace-timestamps-pc",
- "rev": "15bba0527c3c1054af6f59ff31ba67c8a1df2d05",
- "type": "github"
- },
- "original": {
- "owner": "SpoonMcForky",
- "repo": "replace-timestamps-pc",
- "type": "github"
- }
- },
- "discord-report-messages": {
- "flake": false,
- "locked": {
- "lastModified": 1644373439,
- "narHash": "sha256-BmOcIAtKrp3FB4Wb1RICEcEEBdR+sBKGlngLaLG3E3w=",
- "owner": "12944qwerty",
- "repo": "report-messages",
- "rev": "51f923c879be589ce27568550106c8a147ae534d",
- "type": "github"
- },
- "original": {
- "owner": "12944qwerty",
- "repo": "report-messages",
- "type": "github"
- }
- },
- "discord-rolecolor-everywhere": {
- "flake": false,
- "locked": {
- "lastModified": 1649251116,
- "narHash": "sha256-b8dbqLxHMIkX5i7tq+cRk57xEA8dIAYtYgjMDIWxDXc=",
- "owner": "powercord-community",
- "repo": "rolecolor-everywhere",
- "rev": "1691b60364a9782692dc32e8f99c1fca498e8857",
- "type": "github"
- },
- "original": {
- "owner": "powercord-community",
- "repo": "rolecolor-everywhere",
- "type": "github"
- }
- },
- "discord-scrollable-autocomplete": {
- "flake": false,
- "locked": {
- "lastModified": 1651843373,
- "narHash": "sha256-r8xkSp7fs1PF4zZU0UNBKTadrfhJsmlDMvjqLhlwe6Q=",
- "owner": "GriefMoDz",
- "repo": "scrollable-autocomplete",
- "rev": "050869105d30c840424f29c2768f29b3cb4cb59a",
- "type": "github"
- },
- "original": {
- "owner": "GriefMoDz",
- "repo": "scrollable-autocomplete",
- "type": "github"
- }
- },
- "discord-send-timestamps": {
- "flake": false,
- "locked": {
- "lastModified": 1650290522,
- "narHash": "sha256-xBmzPxFH1R9Pec/hSyZ1uIj6LOgad83YDRpsqWxTocU=",
- "owner": "12944qwerty",
- "repo": "send-timestamps",
- "rev": "0f702da2c1df5296da511e5271572038aabd2e89",
- "type": "github"
- },
- "original": {
- "owner": "12944qwerty",
- "repo": "send-timestamps",
- "type": "github"
- }
- },
- "discord-server-count": {
- "flake": false,
- "locked": {
- "lastModified": 1606276576,
- "narHash": "sha256-4mKU3UVggDPVyV+CqptxoRIh/UnD/12LzNcWb4aYyn0=",
- "owner": "TheShadowGamer",
- "repo": "Server-Count",
- "rev": "0595eed44764222b76bf79e37df3aa2e900590b4",
- "type": "github"
- },
- "original": {
- "owner": "TheShadowGamer",
- "repo": "Server-Count",
- "type": "github"
- }
- },
- "discord-showAllMessageButtons": {
- "flake": false,
- "locked": {
- "lastModified": 1627505537,
- "narHash": "sha256-/lD9zaOAwHKa+LMnm6/+5t+k1VXRoj+j47Z5cI0qklI=",
- "owner": "12944qwerty",
- "repo": "showAllMessageButtons",
- "rev": "f1bc388b2c52dc9c813d529974d90efb94c6639e",
- "type": "github"
- },
- "original": {
- "owner": "12944qwerty",
- "repo": "showAllMessageButtons",
- "type": "github"
- }
- },
- "discord-smart-typers": {
- "flake": false,
- "locked": {
- "lastModified": 1641631958,
- "narHash": "sha256-tKeGL2NUH5w3ct3H2TIP/KljIHOzmLycsUtyQ1c/epI=",
- "owner": "GriefMoDz",
- "repo": "smart-typers",
- "rev": "f3d4f35c762de1ce59e0c6dab97f600e7375478a",
- "type": "github"
- },
- "original": {
- "owner": "GriefMoDz",
- "repo": "smart-typers",
- "type": "github"
- }
- },
- "discord-total-members": {
- "flake": false,
- "locked": {
- "lastModified": 1634895886,
- "narHash": "sha256-5hqWQwvEku9wR00xPf8HHkI7F0rkTsArFP2ODxRz8Dc=",
- "owner": "cyyynthia",
- "repo": "total-members",
- "rev": "6f8a826d1729cbddeb3dbcc988867613af5778da",
- "type": "github"
- },
- "original": {
- "owner": "cyyynthia",
- "repo": "total-members",
- "type": "github"
- }
- },
- "discord-user-birthdays": {
- "flake": false,
- "locked": {
- "lastModified": 1645509826,
- "narHash": "sha256-n/DJo2FSREwGBjtx0zc3IknjbpVHxeMK9HmJfPMoMdw=",
- "owner": "GriefMoDz",
- "repo": "user-birthdays",
- "rev": "9ae9b9e4e9fa5feb98d018ab6d1df6cabd6d0bb9",
- "type": "github"
- },
- "original": {
- "owner": "GriefMoDz",
- "repo": "user-birthdays",
- "type": "github"
- }
- },
- "discord-user-details": {
- "flake": false,
- "locked": {
- "lastModified": 1651701198,
- "narHash": "sha256-EI8JDRnM8KWbPRJK2f+aknX/GiTUaaHOC72d9zFEbGU=",
- "owner": "Juby210",
- "repo": "user-details",
- "rev": "d3e9fc097045c04de94a005f571bcd792c871aa4",
- "type": "github"
- },
- "original": {
- "owner": "Juby210",
- "repo": "user-details",
- "type": "github"
- }
- },
- "discord-userid-info": {
- "flake": false,
- "locked": {
- "lastModified": 1632104789,
- "narHash": "sha256-sE4Scn44WV3hkPt8KK7V4j4dseZ83BpG7dLWieGR2GE=",
- "owner": "webtax-gh",
- "repo": "userid-info",
- "rev": "acdcddffbb11beea1166828db740e075e814d9ed",
- "type": "github"
- },
- "original": {
- "owner": "webtax-gh",
- "repo": "userid-info",
- "type": "github"
- }
- },
- "discord-vcTimer": {
- "flake": false,
- "locked": {
- "lastModified": 1621410072,
- "narHash": "sha256-Mz3YrpXLPjYbGifL1UUP534E2drbl7mx3WQnM3s+dlI=",
- "owner": "RazerMoon",
- "repo": "vcTimer",
- "rev": "2a1860380b442f15070173a6f3c678bf60873eb1",
- "type": "github"
- },
- "original": {
- "owner": "RazerMoon",
- "repo": "vcTimer",
- "type": "github"
- }
- },
- "discord-voice-chat-utilities": {
- "flake": false,
- "locked": {
- "lastModified": 1623186051,
- "narHash": "sha256-UVnDqeKDhQS5AoQJzSEl4bjcwsyr4l3NqqkjfJPxABQ=",
- "owner": "dutake",
- "repo": "voice-chat-utilities",
- "rev": "ec64b0b51ca67d5771e522f609eec4d0343e8ebd",
- "type": "github"
- },
- "original": {
- "owner": "dutake",
- "repo": "voice-chat-utilities",
- "type": "github"
- }
- },
- "discord-voice-user-count": {
- "flake": false,
- "locked": {
- "lastModified": 1648400257,
- "narHash": "sha256-hmAFsIAs7+QxFENR5bhZNqVuyGGtzQysj4shxk2wcN0=",
- "owner": "tuanbinhtran",
- "repo": "voice-user-count",
- "rev": "3ba2c776ac8bed2589a7198c087c12c0cf03515c",
- "type": "github"
- },
- "original": {
- "owner": "tuanbinhtran",
- "repo": "voice-user-count",
- "type": "github"
- }
- },
- "discord-webhook-tag": {
- "flake": false,
- "locked": {
- "lastModified": 1645140737,
- "narHash": "sha256-KBKRwlTDaGXkEFGq08Nbbj8Kmnmz7yuDcZts9JZAgMU=",
- "owner": "BenSegal855",
- "repo": "webhook-tag",
- "rev": "7f573b821006d070a3ea2ec92ca822b0a3980ea9",
- "type": "github"
- },
- "original": {
- "owner": "BenSegal855",
- "repo": "webhook-tag",
- "type": "github"
- }
- },
- "flake-utils": {
- "locked": {
- "lastModified": 1644229661,
- "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=",
- "owner": "numtide",
- "repo": "flake-utils",
- "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797",
- "type": "github"
- },
- "original": {
- "owner": "numtide",
- "repo": "flake-utils",
- "type": "github"
- }
- },
- "fup": {
- "inputs": {
- "flake-utils": "flake-utils"
- },
- "locked": {
- "lastModified": 1652704544,
- "narHash": "sha256-UTKE33tYgCmDszaVyWA33a8mtegM5xfH4fH8w4y6TxA=",
- "owner": "gytis-ivaskevicius",
- "repo": "flake-utils-plus",
- "rev": "f8d6d1f87b6177e3bc674c29f247bdbf897ba274",
- "type": "github"
- },
- "original": {
- "owner": "gytis-ivaskevicius",
- "repo": "flake-utils-plus",
- "type": "github"
- }
- },
- "nixpkgs": {
- "locked": {
- "lastModified": 1656239181,
- "narHash": "sha256-wW1xRFBn376yGloXZ4QzBE4hjipMawpV18Lshd9QSPw=",
- "owner": "nixos",
- "repo": "nixpkgs",
- "rev": "f2537a505d45c31fe5d9c27ea9829b6f4c4e6ac5",
- "type": "github"
- },
- "original": {
- "owner": "nixos",
- "ref": "nixos-unstable",
- "repo": "nixpkgs",
- "type": "github"
- }
- },
- "powercord": {
- "flake": false,
- "locked": {
- "lastModified": 1657230161,
- "narHash": "sha256-rxeltTWsAhqnfW04YjP03xh0+htM7vly6nkb28o27/g=",
- "owner": "powercord-org",
- "repo": "powercord",
- "rev": "59df79dbeb7140b29e1abc68ec211853d070a5a6",
- "type": "github"
- },
- "original": {
- "owner": "powercord-org",
- "repo": "powercord",
- "type": "github"
- }
- },
- "powercord-overlay": {
- "inputs": {
- "nixpkgs": [
- "nixpkgs"
- ],
- "powercord": [
- "powercord"
- ]
- },
- "locked": {
- "lastModified": 1656026574,
- "narHash": "sha256-fNGu2Ml6kk7teiywRnWjWMjPv8pPLI1plXeMlvuEiao=",
- "owner": "Infinidoge",
- "repo": "powercord-overlay",
- "rev": "9de1f2ffe18ecce8b1d84804ddccda9fa42ec72e",
- "type": "github"
- },
- "original": {
- "owner": "Infinidoge",
- "repo": "powercord-overlay",
- "type": "github"
- }
- },
- "root": {
- "inputs": {
- "discord-Custom-Volume-Range": "discord-Custom-Volume-Range",
- "discord-Discolored": "discord-Discolored",
- "discord-In-app-notifs": "discord-In-app-notifs",
- "discord-NSFW-tags": "discord-NSFW-tags",
- "discord-PowercordTwemojiEverywhere": "discord-PowercordTwemojiEverywhere",
- "discord-Quick-Bot-Invite": "discord-Quick-Bot-Invite",
- "discord-Quick-Channel-Mute": "discord-Quick-Channel-Mute",
- "discord-SnowflakeInfo": "discord-SnowflakeInfo",
- "discord-Unindent": "discord-Unindent",
- "discord-badges-everywhere": "discord-badges-everywhere",
- "discord-better-connections": "discord-better-connections",
- "discord-better-folders": "discord-better-folders",
- "discord-better-replies": "discord-better-replies",
- "discord-better-settings": "discord-better-settings",
- "discord-better-status-indicators": "discord-better-status-indicators",
- "discord-better-threads": "discord-better-threads",
- "discord-betterinvites": "discord-betterinvites",
- "discord-block-messages": "discord-block-messages",
- "discord-channel-typing": "discord-channel-typing",
- "discord-copy-avatar-url": "discord-copy-avatar-url",
- "discord-copy-raw-message": "discord-copy-raw-message",
- "discord-copy-role-color": "discord-copy-role-color",
- "discord-css-toggler": "discord-css-toggler",
- "discord-custom-timestamps": "discord-custom-timestamps",
- "discord-cutecord": "discord-cutecord",
- "discord-discord-status": "discord-discord-status",
- "discord-dm-typing-indicator": "discord-dm-typing-indicator",
- "discord-guild-profile": "discord-guild-profile",
- "discord-kaomoji": "discord-kaomoji",
- "discord-mention-cache-fix": "discord-mention-cache-fix",
- "discord-message-link-embed": "discord-message-link-embed",
- "discord-online-friends-count": "discord-online-friends-count",
- "discord-permission-viewer": "discord-permission-viewer",
- "discord-powercord-LinkChannels": "discord-powercord-LinkChannels",
- "discord-powercord-message-tooltips": "discord-powercord-message-tooltips",
- "discord-powercord-mute-folder": "discord-powercord-mute-folder",
- "discord-powercord-ownertags": "discord-powercord-ownertags",
- "discord-powercord-pindms": "discord-powercord-pindms",
- "discord-powercord-reverse-image-search": "discord-powercord-reverse-image-search",
- "discord-powercord-tone-indicators": "discord-powercord-tone-indicators",
- "discord-pronoundb-powercord": "discord-pronoundb-powercord",
- "discord-quick-delete-pc": "discord-quick-delete-pc",
- "discord-reddit-parser": "discord-reddit-parser",
- "discord-relationship-notifier": "discord-relationship-notifier",
- "discord-remove-invite-from-user-context-menu": "discord-remove-invite-from-user-context-menu",
- "discord-replace-timestamps-pc": "discord-replace-timestamps-pc",
- "discord-report-messages": "discord-report-messages",
- "discord-rolecolor-everywhere": "discord-rolecolor-everywhere",
- "discord-scrollable-autocomplete": "discord-scrollable-autocomplete",
- "discord-send-timestamps": "discord-send-timestamps",
- "discord-server-count": "discord-server-count",
- "discord-showAllMessageButtons": "discord-showAllMessageButtons",
- "discord-smart-typers": "discord-smart-typers",
- "discord-total-members": "discord-total-members",
- "discord-user-birthdays": "discord-user-birthdays",
- "discord-user-details": "discord-user-details",
- "discord-userid-info": "discord-userid-info",
- "discord-vcTimer": "discord-vcTimer",
- "discord-voice-chat-utilities": "discord-voice-chat-utilities",
- "discord-voice-user-count": "discord-voice-user-count",
- "discord-webhook-tag": "discord-webhook-tag",
- "fup": "fup",
- "nixpkgs": "nixpkgs",
- "powercord": "powercord",
- "powercord-overlay": "powercord-overlay"
- }
- }
- },
- "root": "root",
- "version": 7
-}
diff --git a/subflakes/powercord/flake.nix b/subflakes/powercord/flake.nix
deleted file mode 100644
index fa34e67..0000000
--- a/subflakes/powercord/flake.nix
+++ /dev/null
@@ -1,180 +0,0 @@
-{
- description = "The powercord plugins, themes, and configuration that make up Infinidoge's setup";
-
- inputs = {
- nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
-
- fup.url = "github:gytis-ivaskevicius/flake-utils-plus";
-
- powercord = { url = "github:powercord-org/powercord"; flake = false; };
- # powercord-overlay.url = "github:LavaDesu/powercord-overlay";
- powercord-overlay.url = "github:Infinidoge/powercord-overlay";
- powercord-overlay.inputs.nixpkgs.follows = "nixpkgs";
- powercord-overlay.inputs.powercord.follows = "powercord";
-
- # --- Plugins
- discord-Custom-Volume-Range = { url = "github:PandaDriver156/Custom-Volume-Range"; flake = false; };
- discord-In-app-notifs = { url = "github:BenSegal855/In-app-notifs"; flake = false; };
- discord-NSFW-tags = { url = "github:E-boi/NSFW-tags"; flake = false; };
- discord-PowercordTwemojiEverywhere = { url = "github:VenPlugs/PowercordTwemojiEverywhere"; flake = false; };
- discord-Quick-Bot-Invite = { url = "github:A-Trash-Coder/Quick-Bot-Invite"; flake = false; };
- discord-Quick-Channel-Mute = { url = "github:A-Trash-Coder/Quick-Channel-Mute"; flake = false; };
- discord-SnowflakeInfo = { url = "github:NurMarvin/SnowflakeInfo"; flake = false; };
- discord-Unindent = { url = "github:VenPlugs/Unindent"; flake = false; };
- discord-badges-everywhere = { url = "github:powercord-community/badges-everywhere"; flake = false; };
- discord-better-connections = { url = "github:AAGaming00/better-connections"; flake = false; };
- discord-better-folders = { url = "github:Juby210/better-folders"; flake = false; };
- discord-better-replies = { url = "github:cyyynthia/better-replies"; flake = false; };
- discord-better-settings = { url = "github:mr-miner1/better-settings"; flake = false; };
- discord-better-status-indicators = { url = "github:GriefMoDz/better-status-indicators"; flake = false; };
- discord-better-threads = { url = "github:NurMarvin/better-threads"; flake = false; };
- discord-betterinvites = { url = "github:12944qwerty/betterinvites"; flake = false; };
- discord-block-messages = { url = "github:cyyynthia/block-messages"; flake = false; };
- discord-channel-typing = { url = "github:powercord-community/channel-typing"; flake = false; };
- discord-copy-avatar-url = { url = "github:21Joakim/copy-avatar-url"; flake = false; };
- discord-copy-raw-message = { url = "github:mic0ishere/copy-raw-message"; flake = false; };
- discord-copy-role-color = { url = "github:Antonio32A/copy-role-color"; flake = false; };
- discord-css-toggler = { url = "github:12944qwerty/css-toggler"; flake = false; };
- discord-custom-timestamps = { url = "github:TaiAurori/custom-timestamps"; flake = false; };
- discord-cutecord = { url = "github:powercord-community/cutecord"; flake = false; };
- discord-discord-status = { url = "github:KableKo/discord-status"; flake = false; };
- discord-dm-typing-indicator = { url = "github:zt64/dm-typing-indicator"; flake = false; };
- discord-guild-profile = { url = "github:NurMarvin/guild-profile"; flake = false; };
- discord-kaomoji = { url = "github:davidcralph/kaomoji"; flake = false; };
- discord-mention-cache-fix = { url = "github:asportnoy/mention-cache-fix"; flake = false; };
- discord-message-link-embed = { url = "github:Juby210/message-link-embed"; flake = false; };
- discord-online-friends-count = { url = "github:GriefMoDz/online-friends-count"; flake = false; };
- discord-permission-viewer = { url = "github:powercord-community/permission-viewer"; flake = false; };
- discord-powercord-LinkChannels = { url = "github:E-boi/powercord-LinkChannels"; flake = false; };
- discord-powercord-message-tooltips = { url = "github:lorencerri/powercord-message-tooltips"; flake = false; };
- discord-powercord-mute-folder = { url = "github:notsapinho/powercord-mute-folder"; flake = false; };
- discord-powercord-ownertags = { url = "github:Puyodead1/powercord-ownertag"; flake = false; };
- discord-powercord-pindms = { url = "github:Bricklou/powercord-pindms"; flake = false; };
- discord-powercord-reverse-image-search = { url = "github:lorencerri/powercord-reverse-image-search"; flake = false; };
- discord-powercord-tone-indicators = { url = "github:asportnoy/powercord-tone-indicators"; flake = false; };
- discord-pronoundb-powercord = { url = "github:cyyynthia/pronoundb-powercord"; flake = false; };
- discord-quick-delete-pc = { url = "github:the-cord-plug/quick-delete-pc"; flake = false; };
- discord-reddit-parser = { url = "github:Rodentman87/reddit-parser"; flake = false; };
- discord-relationship-notifier = { url = "github:discord-modifications/relationships-notifier"; flake = false; };
- discord-remove-invite-from-user-context-menu = { url = "github:SebbyLaw/remove-invite-from-user-context-menu"; flake = false; };
- discord-replace-timestamps-pc = { url = "github:SpoonMcForky/replace-timestamps-pc"; flake = false; };
- discord-report-messages = { url = "github:12944qwerty/report-messages"; flake = false; };
- discord-rolecolor-everywhere = { url = "github:powercord-community/rolecolor-everywhere"; flake = false; };
- discord-scrollable-autocomplete = { url = "github:GriefMoDz/scrollable-autocomplete"; flake = false; };
- discord-send-timestamps = { url = "github:12944qwerty/send-timestamps"; flake = false; };
- discord-server-count = { url = "github:TheShadowGamer/Server-Count"; flake = false; };
- discord-showAllMessageButtons = { url = "github:12944qwerty/showAllMessageButtons"; flake = false; };
- discord-smart-typers = { url = "github:GriefMoDz/smart-typers"; flake = false; };
- discord-total-members = { url = "github:cyyynthia/total-members"; flake = false; };
- discord-user-birthdays = { url = "github:GriefMoDz/user-birthdays"; flake = false; };
- discord-user-details = { url = "github:Juby210/user-details"; flake = false; };
- discord-userid-info = { url = "github:webtax-gh/userid-info"; flake = false; };
- discord-vcTimer = { url = "github:RazerMoon/vcTimer"; flake = false; };
- discord-voice-chat-utilities = { url = "github:dutake/voice-chat-utilities"; flake = false; };
- discord-voice-user-count = { url = "github:tuanbinhtran/voice-user-count"; flake = false; };
- discord-webhook-tag = { url = "github:BenSegal855/webhook-tag"; flake = false; };
-
- # --- Themes ---
- discord-Discolored = { url = "github:NYRI4/Discolored"; flake = false; };
- };
-
- outputs = inputs@{ self, nixpkgs, fup, powercord-overlay, ... }:
- let
- patch = name: "${./patches}/${name}.patch";
- in
- fup.lib.mkFlake rec {
-
- inherit self inputs;
-
- channelsConfig = { allowUnfree = true; };
- sharedOverlays = [ powercord-overlay.overlay ];
-
- overlay = final: prev: { inherit (self.packages.x86_64-linux) powercord; };
-
- outputsBuilder = channels: rec {
- defaultPackage = packages.powercord;
- packages = with channels.nixpkgs; {
- powercord = (discord-plugged.override {
- patches = (map patch [
- "remove-heygirl"
- "remove-lmgtfy"
- "remove-mock"
- "remove-spotify"
- "remove-updater"
- ]);
-
- plugins = with inputs; [
- discord-Custom-Volume-Range
- discord-In-app-notifs
- discord-NSFW-tags
- discord-PowercordTwemojiEverywhere
- discord-Quick-Bot-Invite
- discord-Quick-Channel-Mute
- discord-SnowflakeInfo
- discord-Unindent
- discord-badges-everywhere
- discord-better-connections
- discord-better-folders
- discord-better-replies
- discord-better-settings
- discord-better-status-indicators
- discord-better-threads
- discord-betterinvites
- discord-block-messages
- discord-channel-typing
- discord-copy-avatar-url
- discord-copy-raw-message
- discord-copy-role-color
- (applyPatches {
- src = discord-css-toggler;
- patches = [ (patch "css-toggler") ];
- name = "discord-css-toggler";
- })
- discord-custom-timestamps
- discord-cutecord
- discord-discord-status
- # discord-dm-typing-indicator
- discord-guild-profile
- discord-kaomoji
- discord-mention-cache-fix
- discord-message-link-embed
- discord-online-friends-count
- discord-permission-viewer
- discord-powercord-LinkChannels
- discord-powercord-message-tooltips
- discord-powercord-mute-folder
- discord-powercord-ownertags
- # discord-powercord-pindms
- discord-powercord-reverse-image-search
- discord-powercord-tone-indicators
- discord-pronoundb-powercord
- discord-quick-delete-pc
- discord-reddit-parser
- discord-relationship-notifier
- discord-remove-invite-from-user-context-menu
- discord-replace-timestamps-pc
- discord-report-messages
- discord-rolecolor-everywhere
- # discord-scrollable-autocomplete
- # discord-send-timestamps
- # discord-server-count
- discord-showAllMessageButtons
- discord-smart-typers
- discord-total-members
- discord-user-birthdays
- discord-user-details
- discord-userid-info
- discord-vcTimer
- discord-voice-chat-utilities
- discord-voice-user-count
- discord-webhook-tag
- ];
- themes = with inputs; [
- discord-Discolored
- ];
- });
- };
- };
-
- };
-}
diff --git a/subflakes/powercord/patches/css-toggler.patch b/subflakes/powercord/patches/css-toggler.patch
deleted file mode 100644
index d70f52f..0000000
--- a/subflakes/powercord/patches/css-toggler.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/constants.js b/constants.js
-index 6bc4317..2ae4b55 100644
---- a/constants.js
-+++ b/constants.js
-@@ -11,7 +11,7 @@ module.exports = Object.freeze({
- ERROR: 0xED4245,
- SUCCESS: 0x3BA55C
- },
-- CACHE_FOLDER: join(__dirname, '.cache'),
-+ CACHE_FOLDER: join("/home/infinidoge/.config", "powercord", 'css-toggler-cache'),
- MAX_SNIPPET_TITLE_LENGTH: 32,
- MAX_SNIPPET_DESCRIPTION_LENGTH: 120,
- DEFAULT_SNIPPET_TITLE: 'Untitled Snippet'
diff --git a/subflakes/powercord/patches/remove-heygirl.patch b/subflakes/powercord/patches/remove-heygirl.patch
deleted file mode 100644
index 62da8a0..0000000
--- a/subflakes/powercord/patches/remove-heygirl.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-diff --git a/src/Powercord/plugins/pc-heygirl/index.js b/src/Powercord/plugins/pc-heygirl/index.js
-deleted file mode 100644
-index bd97579..0000000
---- a/src/Powercord/plugins/pc-heygirl/index.js
-+++ /dev/null
-@@ -1,49 +0,0 @@
--// idea based on http://heygirl.io/ (+used their images)
--
--const { Plugin } = require('powercord/entities');
--
--module.exports = class HeyGirl extends Plugin {
-- constructor () {
-- super();
--
-- this.URLs = [].concat(
-- Array(3).fill('jpg'),
-- Array(2).fill('gif'),
-- Array(1).fill('png'),
-- Array(4).fill('gif'),
-- Array(3).fill('jpg'),
-- Array(1).fill('png')
-- ).map((format, id) => (
-- `http://heygirl.io/img/gosling-square-${id + 1}.${format}`
-- ));
-- }
--
-- startPlugin () {
-- powercord.api.commands.registerCommand({
-- command: 'heygirl',
-- description: 'Replaces every image with a random image of Ryan Gosling',
-- usage: '{c}',
-- executor: this.heygirl.bind(this)
-- });
-- }
--
-- pluginWillUnload () {
-- powercord.api.commands.unregisterCommand('heygirl');
-- }
--
-- getRandomURL () {
-- return this.URLs[Math.floor(Math.random() * this.URLs.length)];
-- }
--
-- heygirl () {
-- document.querySelectorAll('[style*="background-image"]')
-- .forEach(({ style }) => (
-- style.backgroundImage = `url("${this.getRandomURL()}")`
-- ));
--
-- document.querySelectorAll('img')
-- .forEach(image => (
-- image.src = this.getRandomURL()
-- ));
-- }
--};
-diff --git a/src/Powercord/plugins/pc-heygirl/manifest.json b/src/Powercord/plugins/pc-heygirl/manifest.json
-deleted file mode 100644
-index 084c039..0000000
---- a/src/Powercord/plugins/pc-heygirl/manifest.json
-+++ /dev/null
-@@ -1,7 +0,0 @@
--{
-- "name": "Heygirl",
-- "version": "1.0.0",
-- "description": "heygirl",
-- "author": "Powercord Team",
-- "license": "MIT"
--}
diff --git a/subflakes/powercord/patches/remove-lmgtfy.patch b/subflakes/powercord/patches/remove-lmgtfy.patch
deleted file mode 100644
index 044ae5d..0000000
--- a/subflakes/powercord/patches/remove-lmgtfy.patch
+++ /dev/null
@@ -1,189 +0,0 @@
-diff --git a/src/Powercord/plugins/pc-lmgtfy/Settings.jsx b/src/Powercord/plugins/pc-lmgtfy/Settings.jsx
-deleted file mode 100644
-index bd26ff3..0000000
---- a/src/Powercord/plugins/pc-lmgtfy/Settings.jsx
-+++ /dev/null
-@@ -1,21 +0,0 @@
--const { React } = require('powercord/webpack');
--const { SwitchItem } = require('powercord/components/settings');
--
--module.exports = ({ getSetting, toggleSetting }) => (
--
-- toggleSetting('iie')}
-- >
-- Enable Internet Explainer
--
-- toggleSetting('autocompletes')}
-- >
-- Display Autocompletes
--
--
--);
-diff --git a/src/Powercord/plugins/pc-lmgtfy/index.js b/src/Powercord/plugins/pc-lmgtfy/index.js
-deleted file mode 100644
-index 1c46bfb..0000000
---- a/src/Powercord/plugins/pc-lmgtfy/index.js
-+++ /dev/null
-@@ -1,143 +0,0 @@
--const { Plugin } = require('powercord/entities');
--
--const Constants = Object.freeze({
-- SEARCH_ENGINES: {
-- google: 'g',
-- lmgtfy: 'l',
-- bing: 'b',
-- yahoo: 'y',
-- aol: 'a',
-- ask: 'k',
-- duckduckgo: 'd',
-- snopes: 's',
-- startpage: 't'
-- },
-- SEARCH_TYPES: {
-- web: 'w',
-- images: 'i',
-- videos: 'v',
-- news: 'n',
-- shopping: 's'
-- }
--});
--
--const Settings = require('./Settings');
--
--module.exports = class LMGTFY extends Plugin {
-- startPlugin () {
-- powercord.api.settings.registerSettings(this.entityID, {
-- category: this.entityID,
-- label: 'LMGTFY',
-- render: Settings
-- });
--
-- powercord.api.commands.registerCommand({
-- command: 'lmgtfy',
-- description: 'Let me Google that for you...',
-- usage: '{c} [--iie] [...search terms] ',
-- executor: this.handleCommand.bind(this),
-- autocomplete: this.handleAutocomplete.bind(this)
-- });
-- }
--
-- pluginWillUnload () {
-- powercord.api.settings.unregisterSettings(this.entityID);
-- powercord.api.commands.unregisterCommand('lmgtfy');
-- }
--
-- handleCommand (args) {
-- if (args.length < 1) {
-- return;
-- }
--
-- const iie = args[0].includes('--iie') ? !!args.splice(args.indexOf('--iie'), 1) : this.settings.get('iie', false);
-- const options = args.slice(-2).map(arg => arg.toLowerCase());
-- const params = {};
-- params.searchEngine = Constants.SEARCH_ENGINES.google;
--
-- for (const key of Object.keys(Constants)) {
-- if (key === 'SEARCH_ENGINES') {
-- for (const searchEngine of Object.keys(Constants[key])) {
-- for (let i = 0; i < options.length; i++) {
-- const match = options[i].toLowerCase() === searchEngine;
-- if (match) {
-- params.searchEngine = Constants.SEARCH_ENGINES[searchEngine];
-- args.splice(args.lastIndexOf(searchEngine), 1);
-- options.splice(i, 1);
-- break;
-- }
-- }
-- }
-- } else if (key === 'SEARCH_TYPES') {
-- for (const searchType of Object.keys(Constants[key])) {
-- for (let i = 0; i < options.length; i++) {
-- const match = options[i].toLowerCase() === searchType;
-- if (match) {
-- if (params.searchEngine === 'g') {
-- params.searchType = Constants.SEARCH_TYPES[searchType];
-- args.splice(args.lastIndexOf(searchType), 1);
-- }
-- }
-- }
-- }
-- }
-- }
--
-- const { searchEngine, searchType } = params;
-- const queryString = new URLSearchParams();
-- queryString.append('q', args.join(' '));
-- if (searchType) {
-- queryString.append('s', searchEngine);
-- queryString.append('t', searchType);
-- } else if (searchEngine !== 'g') {
-- queryString.append('s', searchEngine);
-- }
--
-- if (iie) {
-- queryString.append('iie', +iie);
-- }
--
-- return {
-- send: true,
-- result: ``
-- };
-- }
--
-- handleAutocomplete (args) {
-- if (!this.settings.get('autocompletes', true) || args.length === 0) {
-- return false;
-- }
--
-- if (args[1] === void 0) {
-- return {
-- commands: [ {
-- command: 'Please input your search terms...',
-- instruction: true
-- } ]
-- };
-- }
--
-- const lastArg = args[args.length - 1];
-- const searchEngines = Object.keys(Constants.SEARCH_ENGINES);
-- const searchEngine = searchEngines.find(engine => args[args.lastIndexOf(engine)] === engine);
-- if (!searchEngine) {
-- return {
-- commands: searchEngines
-- .filter(engine => engine.includes(lastArg))
-- .map(engine => ({ command: engine })),
-- header: 'select a search engine...'
-- };
-- }
--
-- const searchTypes = Object.keys(Constants.SEARCH_TYPES);
-- const searchType = searchTypes.find(type => args[args.indexOf(searchEngine) + 1] === type);
-- if (searchEngine === 'google' && !searchType) {
-- return {
-- commands: searchTypes
-- .filter(type => type.includes(lastArg))
-- .map(type => ({ command: type })),
-- header: 'select a search type...'
-- };
-- }
-- }
--};
-diff --git a/src/Powercord/plugins/pc-lmgtfy/manifest.json b/src/Powercord/plugins/pc-lmgtfy/manifest.json
-deleted file mode 100644
-index 08a9989..0000000
---- a/src/Powercord/plugins/pc-lmgtfy/manifest.json
-+++ /dev/null
-@@ -1,7 +0,0 @@
--{
-- "name": "LMGTFY",
-- "version": "1.0.0",
-- "description": "Let me Google that for you...",
-- "author": "Powercord Team",
-- "license": "MIT"
--}
diff --git a/subflakes/powercord/patches/remove-mock.patch b/subflakes/powercord/patches/remove-mock.patch
deleted file mode 100644
index e3ae0cb..0000000
--- a/subflakes/powercord/patches/remove-mock.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-diff --git a/src/Powercord/plugins/pc-mock/index.js b/src/Powercord/plugins/pc-mock/index.js
-deleted file mode 100644
-index e35988b..0000000
---- a/src/Powercord/plugins/pc-mock/index.js
-+++ /dev/null
-@@ -1,19 +0,0 @@
--const { Plugin } = require('powercord/entities');
--
--module.exports = class Mock extends Plugin {
-- startPlugin () {
-- powercord.api.commands.registerCommand({
-- command: 'mock',
-- description: 'Mock a user...',
-- usage: '{c} [text to mock]',
-- executor: (args) => ({
-- send: true,
-- result: args.join(' ').split('').map((c, i) => i % 2 ? c.toUpperCase() : c).join('')
-- })
-- });
-- }
--
-- pluginWillUnload () {
-- powercord.api.commands.unregisterCommand('mock');
-- }
--};
-diff --git a/src/Powercord/plugins/pc-mock/manifest.json b/src/Powercord/plugins/pc-mock/manifest.json
-deleted file mode 100644
-index 8b0bc06..0000000
---- a/src/Powercord/plugins/pc-mock/manifest.json
-+++ /dev/null
-@@ -1,7 +0,0 @@
--{
-- "name": "Mock",
-- "version": "1.0.0",
-- "description": "Mock people",
-- "author": "Melmsie",
-- "license": "MIT"
--}
diff --git a/subflakes/powercord/patches/remove-spotify.patch b/subflakes/powercord/patches/remove-spotify.patch
deleted file mode 100644
index 7e3d3b6..0000000
--- a/subflakes/powercord/patches/remove-spotify.patch
+++ /dev/null
@@ -1,2271 +0,0 @@
-diff --git a/src/Powercord/plugins/pc-spotify/SpotifyAPI.js b/src/Powercord/plugins/pc-spotify/SpotifyAPI.js
-deleted file mode 100644
-index 35bbc83..0000000
---- a/src/Powercord/plugins/pc-spotify/SpotifyAPI.js
-+++ /dev/null
-@@ -1,245 +0,0 @@
--const { WEBSITE } = require('powercord/constants');
--const { shell: { openExternal } } = require('electron');
--const { get, put, post, del } = require('powercord/http');
--const { getModule, http, spotify, constants: { Endpoints } } = require('powercord/webpack');
--const { SPOTIFY_BASE_URL, SPOTIFY_PLAYER_URL } = require('./constants');
--const playerStore = require('./playerStore/store');
--
--const revokedMessages = {
-- SCOPES_UPDATED: 'Your Spotify account needs to be relinked to your Powercord account due to new authorizations required.',
-- ACCESS_DENIED: 'Powercord is no longer able to connect to your Spotify account. Therefore, it has been automatically unlinked.'
--};
--
--let usedCached = false;
--
--module.exports = {
-- accessToken: null,
--
-- async getAccessToken () {
-- if (!powercord.account) {
-- await powercord.fetchAccount();
-- }
--
-- if (powercord.account && powercord.account.accounts.spotify) {
-- const baseUrl = powercord.settings.get('backendURL', WEBSITE);
-- const resp = await get(`${baseUrl}/api/v2/users/@me/spotify`)
-- .set('Authorization', powercord.account.token)
-- .then(r => r.body);
--
-- if (resp.revoked) {
-- powercord.api.notices.sendAnnouncement('spotify-revoked', {
-- color: 'orange',
-- message: revokedMessages[resp.revoked],
-- button: {
-- text: 'Relink Spotify',
-- onClick: () => openExternal(`${baseUrl}/api/v2/oauth/spotify`)
-- }
-- });
-- } else if (resp.token) {
-- return resp.token;
-- }
-- }
--
-- console.debug('%c[SpotifyAPI]', 'color: #1ed860', 'No Spotify account linked to Powercord; Falling back to Discord\'s token');
-- if (!usedCached) {
-- const spotifyMdl = await getModule([ 'getActiveSocketAndDevice' ]);
-- const active = spotifyMdl.getActiveSocketAndDevice();
-- if (active && active.socket && active.socket.accessToken) {
-- usedCached = true;
-- return active.socket.accessToken;
-- }
-- }
--
-- usedCached = false;
-- const spotifyUserID = await http.get(Endpoints.CONNECTIONS)
-- .then(res =>
-- res.body.find(connection =>
-- connection.type === 'spotify'
-- ).id
-- );
--
-- return spotify.getAccessToken(spotifyUserID)
-- .then(r => r.body.access_token);
-- },
--
-- genericRequest (request, isConnectWeb) {
-- request.set('Authorization', `Bearer ${this.accessToken}`);
-- if (isConnectWeb) {
-- const currentDeviceId = playerStore.getLastActiveDeviceId();
-- if (currentDeviceId) {
-- request.query('device_id', currentDeviceId);
-- }
-- }
-- return request
-- .catch(async (err) => {
-- if (err) {
-- if (err.statusCode === 401) {
-- this.accessToken = await this.getAccessToken();
-- delete request._res;
-- return this.genericRequest(request);
-- }
-- console.error(err.body, request.opts);
-- throw err;
-- }
-- });
-- },
--
-- getTrack (trackId) {
-- return this.genericRequest(
-- get(`${SPOTIFY_BASE_URL}/tracks/${trackId}`)
-- ).then(r => r.body);
-- },
--
-- getPlaylists (limit = 50, offset = 0) {
-- return this._fetchAll(`${SPOTIFY_BASE_URL}/me/playlists`, limit, offset);
-- },
--
-- getPlaylistTracks (playlistId, limit = 100, offset = 0) {
-- return this._fetchAll(`${SPOTIFY_BASE_URL}/playlists/${playlistId}/tracks`, limit, offset);
-- },
--
-- addToPlaylist (playlistID, songURI) {
-- return this.genericRequest(
-- post(`${SPOTIFY_BASE_URL}/playlists/${playlistID}/tracks`)
-- .query('uris', songURI)
-- ).then(r => r.body);
-- },
--
-- getAlbums (limit = 50, offset = 0) {
-- return this._fetchAll(`${SPOTIFY_BASE_URL}/me/albums`, limit, offset);
-- },
--
-- getAlbumTracks (albumId, limit = 100, offset = 0) {
-- return this._fetchAll(`${SPOTIFY_BASE_URL}/albums/${albumId}/tracks`, limit, offset);
-- },
--
-- getTopSongs () {
-- return this.genericRequest(
-- get(`${SPOTIFY_BASE_URL}/me/top/tracks`)
-- .query('limit', 50)
-- ).then(r => r.body);
-- },
--
-- getSongs (limit = 50, offset = 0) {
-- return this._fetchAll(`${SPOTIFY_BASE_URL}/me/tracks`, limit, offset);
-- },
--
-- search (query, type = 'track', limit = 20) {
-- return this.genericRequest(
-- get(`${SPOTIFY_BASE_URL}/search`)
-- .query('q', query)
-- .query('type', type)
-- .query('limit', limit)
-- ).then(r => r.body);
-- },
--
-- play (data) {
-- return this.genericRequest(
-- put(`${SPOTIFY_PLAYER_URL}/play`).send(data), true
-- );
-- },
--
-- pause () {
-- return this.genericRequest(
-- put(`${SPOTIFY_PLAYER_URL}/pause`), true
-- );
-- },
--
-- seek (position) {
-- return this.genericRequest(
-- put(`${SPOTIFY_PLAYER_URL}/seek`).query('position_ms', position), true
-- );
-- },
--
-- next () {
-- return this.genericRequest(
-- post(`${SPOTIFY_PLAYER_URL}/next`), true
-- );
-- },
--
-- prev () {
-- return this.genericRequest(
-- post(`${SPOTIFY_PLAYER_URL}/previous`), true
-- );
-- },
--
-- getPlayer () {
-- return this.genericRequest(
-- get(SPOTIFY_PLAYER_URL)
-- ).then(r => r.body);
-- },
--
-- getDevices () {
-- return this.genericRequest(
-- get(`${SPOTIFY_PLAYER_URL}/devices`)
-- ).then(r => r.body);
-- },
--
-- setVolume (volume) {
-- return this.genericRequest(
-- put(`${SPOTIFY_PLAYER_URL}/volume`).query('volume_percent', volume), true
-- );
-- },
--
-- setActiveDevice (deviceID) {
-- return this.genericRequest(
-- put(SPOTIFY_PLAYER_URL)
-- .send({
-- device_ids: [ deviceID ],
-- play: true
-- })
-- );
-- },
--
-- setRepeatState (state) {
-- return this.genericRequest(
-- put(`${SPOTIFY_PLAYER_URL}/repeat`).query('state', state), true
-- );
-- },
--
-- setShuffleState (state) {
-- return this.genericRequest(
-- put(`${SPOTIFY_PLAYER_URL}/shuffle`).query('state', state), true
-- );
-- },
--
-- addSong (songID) {
-- return this.genericRequest(
-- put(`${SPOTIFY_BASE_URL}/me/tracks`)
-- .query('ids', songID)
-- );
-- },
--
-- removeSong (songID) {
-- return this.genericRequest(
-- del(`${SPOTIFY_BASE_URL}/me/tracks`)
-- .query('ids', songID)
-- );
-- },
--
-- checkLibrary (songID) {
-- return this.genericRequest(
-- get(`${SPOTIFY_BASE_URL}/me/tracks/contains`)
-- .query('ids', songID)
-- );
-- },
--
-- async _fetchAll (url, limit, offset) {
-- const items = [];
-- while (url) {
-- const req = get(url);
-- if (limit) {
-- req.query('limit', limit);
-- limit = 0;
-- }
-- if (offset) {
-- req.query('offset', offset);
-- offset = 0;
-- }
-- const res = await this.genericRequest(req).then(r => r.body);
-- items.push(...res.items);
-- url = res.next;
-- }
-- return items;
-- }
--};
-diff --git a/src/Powercord/plugins/pc-spotify/commands/album.js b/src/Powercord/plugins/pc-spotify/commands/album.js
-deleted file mode 100644
-index 0d5e298..0000000
---- a/src/Powercord/plugins/pc-spotify/commands/album.js
-+++ /dev/null
-@@ -1,26 +0,0 @@
--const playerStore = require('../playerStore/store');
--
--module.exports = {
-- command: 'album',
-- description: 'Send album of current playing song to selected channel',
-- category: 'Spotify',
-- executor () {
-- const currentTrack = playerStore.getCurrentTrack();
-- if (!currentTrack) {
-- return {
-- send: false,
-- result: 'You are not currently listening to anything.'
-- };
-- }
-- if (!currentTrack.urls.album) {
-- return {
-- send: false,
-- result: 'The track you\'re listening to doesn\'t belong to an album.'
-- };
-- }
-- return {
-- send: true,
-- result: currentTrack.urls.album
-- };
-- }
--};
-diff --git a/src/Powercord/plugins/pc-spotify/commands/find.js b/src/Powercord/plugins/pc-spotify/commands/find.js
-deleted file mode 100644
-index f5d6fe9..0000000
---- a/src/Powercord/plugins/pc-spotify/commands/find.js
-+++ /dev/null
-@@ -1,39 +0,0 @@
--const { getModule } = require('powercord/webpack');
--const SpotifyAPI = require('../SpotifyAPI');
--
--module.exports = {
-- command: 'find',
-- description: 'Searches for a song and plays it!',
-- usage: '{c} {song}',
-- category: 'Spotify',
-- executor (args) {
-- const isPremium = getModule([ 'isSpotifyPremium' ], false).isSpotifyPremium();
-- if (!isPremium) {
-- return {
-- send: false,
-- result: 'Oops, it looks like you are not a Spotify Premium member. Unfortunately, this feature isn\'t available to you as per Spotify\'s requirements.'
-- };
-- }
-- if (!args[0]) {
-- return {
-- send: false,
-- result: 'You need to specify a song to search for and play!'
-- };
-- }
--
-- return SpotifyAPI.search(args.join(' '), 'track', 1).then((body) => {
-- const tracksArray = body.tracks.items;
-- if (tracksArray.length > 0) {
-- const trackURL = tracksArray[0].uri;
-- SpotifyAPI.play({
-- uris: [ trackURL ]
-- });
-- return;
-- }
-- return {
-- send: false,
-- result: 'Couldn\'t find a song!'
-- };
-- });
-- }
--};
-diff --git a/src/Powercord/plugins/pc-spotify/commands/index.js b/src/Powercord/plugins/pc-spotify/commands/index.js
-deleted file mode 100644
-index d59ce4c..0000000
---- a/src/Powercord/plugins/pc-spotify/commands/index.js
-+++ /dev/null
-@@ -1,7 +0,0 @@
--require('fs')
-- .readdirSync(__dirname)
-- .filter((file) => file !== 'index.js' && file !== '.DS_Store')
-- .forEach(filename => {
-- const moduleName = filename.split('.')[0];
-- exports[moduleName] = require(`${__dirname}/${filename}`);
-- });
-diff --git a/src/Powercord/plugins/pc-spotify/commands/like.js b/src/Powercord/plugins/pc-spotify/commands/like.js
-deleted file mode 100644
-index 3840aac..0000000
---- a/src/Powercord/plugins/pc-spotify/commands/like.js
-+++ /dev/null
-@@ -1,29 +0,0 @@
--const playerStore = require('../playerStore/store');
--const SpotifyAPI = require('../SpotifyAPI');
--
--module.exports = {
-- command: 'like',
-- description: 'Like the current playing song',
-- category: 'Spotify',
-- async executor () {
-- if (!powercord.account || !powercord.account.accounts.spotify) {
-- return {
-- send: false,
-- result: 'You need a Powercord account and connected Spotify account to use this feature!'
-- };
-- }
-- const currentTrack = playerStore.getCurrentTrack();
-- if (!currentTrack) {
-- return {
-- send: false,
-- result: 'You are not currently listening to anything.'
-- };
-- }
-- const { body } = await SpotifyAPI.checkLibrary(currentTrack.id);
-- SpotifyAPI[body[0] ? 'removeSong' : 'addSong'](currentTrack.id);
-- return {
-- send: false,
-- result: `You ${body[0] ? 'removed' : 'added'} **${currentTrack.name}** by **${currentTrack.artists}** ${body[0] ? 'from' : 'to'} your Liked Songs.`
-- };
-- }
--};
-diff --git a/src/Powercord/plugins/pc-spotify/commands/next.js b/src/Powercord/plugins/pc-spotify/commands/next.js
-deleted file mode 100644
-index 730c4db..0000000
---- a/src/Powercord/plugins/pc-spotify/commands/next.js
-+++ /dev/null
-@@ -1,20 +0,0 @@
--const { getModule } = require('powercord/webpack');
--const SpotifyAPI = require('../SpotifyAPI');
--
--module.exports = {
-- command: 'next',
-- aliases: [ 'skip' ],
-- description: 'Skip Spotify song',
-- usage: '{c}',
-- category: 'Spotify',
-- executor () {
-- const isPremium = getModule([ 'isSpotifyPremium' ], false).isSpotifyPremium();
-- if (!isPremium) {
-- return {
-- send: false,
-- result: 'Oops, it looks like you are not a Spotify Premium member. Unfortunately, this feature isn\'t available to you as per Spotify\'s requirements.'
-- };
-- }
-- return SpotifyAPI.next();
-- }
--};
-diff --git a/src/Powercord/plugins/pc-spotify/commands/pause.js b/src/Powercord/plugins/pc-spotify/commands/pause.js
-deleted file mode 100644
-index 4d576d7..0000000
---- a/src/Powercord/plugins/pc-spotify/commands/pause.js
-+++ /dev/null
-@@ -1,19 +0,0 @@
--const { getModule } = require('powercord/webpack');
--const SpotifyAPI = require('../SpotifyAPI');
--
--module.exports = {
-- command: 'pause',
-- description: 'Pause Spotify playback',
-- usage: '{c}',
-- category: 'Spotify',
-- executor () {
-- const isPremium = getModule([ 'isSpotifyPremium' ], false).isSpotifyPremium();
-- if (!isPremium) {
-- return {
-- send: false,
-- result: 'Oops, it looks like you are not a Spotify Premium member. Unfortunately, this feature isn\'t available to you as per Spotify\'s requirements.'
-- };
-- }
-- return SpotifyAPI.pause();
-- }
--};
-diff --git a/src/Powercord/plugins/pc-spotify/commands/play.js b/src/Powercord/plugins/pc-spotify/commands/play.js
-deleted file mode 100644
-index a857325..0000000
---- a/src/Powercord/plugins/pc-spotify/commands/play.js
-+++ /dev/null
-@@ -1,38 +0,0 @@
--const { getModule } = require('powercord/webpack');
--const SpotifyAPI = require('../SpotifyAPI');
--const urlRegex = /\/track\/([A-z0-9]*)/;
--
--module.exports = {
-- command: 'play',
-- description: 'Play a Spotify URL',
-- usage: '{c} ',
-- category: 'Spotify',
-- executor ([ url ]) {
-- const isPremium = getModule([ 'isSpotifyPremium' ], false).isSpotifyPremium();
-- if (!isPremium) {
-- return {
-- send: false,
-- result: 'Oops, it looks like you are not a Spotify Premium member. Unfortunately, this feature isn\'t available to you as per Spotify\'s requirements.'
-- };
-- }
--
-- if (!url) {
-- const spotifyModals = document.querySelectorAll('.embedSpotify-tvxDCr');
-- const spotifyModal = spotifyModals[spotifyModals.length - 1];
-- url = spotifyModal && spotifyModal.children[0].src;
--
-- if (!url) {
-- return {
-- send: false,
-- result: 'No URL specified.'
-- };
-- }
-- }
--
-- SpotifyAPI.play({
-- uris: [
-- `spotify:track:${urlRegex.exec(url)[1]}`
-- ]
-- });
-- }
--};
-diff --git a/src/Powercord/plugins/pc-spotify/commands/previous.js b/src/Powercord/plugins/pc-spotify/commands/previous.js
-deleted file mode 100644
-index 8cb704d..0000000
---- a/src/Powercord/plugins/pc-spotify/commands/previous.js
-+++ /dev/null
-@@ -1,20 +0,0 @@
--const { getModule } = require('powercord/webpack');
--const SpotifyAPI = require('../SpotifyAPI');
--
--module.exports = {
-- command: 'previous',
-- aliases: [ 'prev' ],
-- description: 'Go back one Spotify song',
-- usage: '{c}',
-- category: 'Spotify',
-- executor () {
-- const isPremium = getModule([ 'isSpotifyPremium' ], false).isSpotifyPremium();
-- if (!isPremium) {
-- return {
-- send: false,
-- result: 'Oops, it looks like you are not a Spotify Premium member. Unfortunately, this feature isn\'t available to you as per Spotify\'s requirements.'
-- };
-- }
-- return SpotifyAPI.prev();
-- }
--};
-diff --git a/src/Powercord/plugins/pc-spotify/commands/resume.js b/src/Powercord/plugins/pc-spotify/commands/resume.js
-deleted file mode 100644
-index da6486c..0000000
---- a/src/Powercord/plugins/pc-spotify/commands/resume.js
-+++ /dev/null
-@@ -1,19 +0,0 @@
--const { getModule } = require('powercord/webpack');
--const SpotifyAPI = require('../SpotifyAPI');
--
--module.exports = {
-- command: 'resume',
-- description: 'Resume Spotify playback',
-- usage: '{c}',
-- category: 'Spotify',
-- executor () {
-- const isPremium = getModule([ 'isSpotifyPremium' ], false).isSpotifyPremium();
-- if (!isPremium) {
-- return {
-- send: false,
-- result: 'Oops, it looks like you are not a Spotify Premium member. Unfortunately, this feature isn\'t available to you as per Spotify\'s requirements.'
-- };
-- }
-- return SpotifyAPI.play();
-- }
--};
-diff --git a/src/Powercord/plugins/pc-spotify/commands/share.js b/src/Powercord/plugins/pc-spotify/commands/share.js
-deleted file mode 100644
-index b5d71c5..0000000
---- a/src/Powercord/plugins/pc-spotify/commands/share.js
-+++ /dev/null
-@@ -1,50 +0,0 @@
--const { open: openModal } = require('powercord/modal');
--const { React } = require('powercord/webpack');
--const SpotifyAPI = require('../SpotifyAPI');
--const playerStore = require('../playerStore/store');
--const ShareModal = require('../components/ShareModal');
--
--module.exports = {
-- command: 'share',
-- description: 'Send specified or current playing song to selected channel',
-- usage: '{c} {song name/artist}',
-- category: 'Spotify',
-- async executor (query) {
-- query = query.join(' ');
--
-- if (query.length > 0) {
-- const result = await SpotifyAPI.search(query, 'track', 14);
-- const closestTrack = result.tracks.items[0];
--
-- if (result.tracks.items.length > 1) {
-- return openModal(() => React.createElement(ShareModal, {
-- tracks: result.tracks,
-- query
-- }));
-- } else if (closestTrack) {
-- return {
-- send: true,
-- result: closestTrack.external_urls.spotify
-- };
-- }
--
-- return {
-- send: false,
-- result: `Couldn't find "\`${query}\`". Try searching again using a different spelling or keyword.`
-- };
-- }
--
-- const currentTrack = playerStore.getCurrentTrack();
-- if (!currentTrack) {
-- return {
-- send: false,
-- result: 'You are not currently listening to anything.'
-- };
-- }
--
-- return {
-- send: true,
-- result: currentTrack.urls.track
-- };
-- }
--};
-diff --git a/src/Powercord/plugins/pc-spotify/commands/volume.js b/src/Powercord/plugins/pc-spotify/commands/volume.js
-deleted file mode 100644
-index 83fd046..0000000
---- a/src/Powercord/plugins/pc-spotify/commands/volume.js
-+++ /dev/null
-@@ -1,20 +0,0 @@
--const { getModule } = require('powercord/webpack');
--const SpotifyAPI = require('../SpotifyAPI');
--
--module.exports = {
-- command: 'volume',
-- aliases: [ 'vol' ],
-- description: 'Change Spotify volume',
-- usage: '{c} ',
-- category: 'Spotify',
-- executor ([ args ]) {
-- const isPremium = getModule([ 'isSpotifyPremium' ], false).isSpotifyPremium();
-- if (!isPremium) {
-- return {
-- send: false,
-- result: 'Oops, it looks like you are not a Spotify Premium member. Unfortunately, this feature isn\'t available to you as per Spotify\'s requirements.'
-- };
-- }
-- return SpotifyAPI.setVolume(args);
-- }
--};
-diff --git a/src/Powercord/plugins/pc-spotify/components/AddToPlaylist.jsx b/src/Powercord/plugins/pc-spotify/components/AddToPlaylist.jsx
-deleted file mode 100644
-index 77cd1af..0000000
---- a/src/Powercord/plugins/pc-spotify/components/AddToPlaylist.jsx
-+++ /dev/null
-@@ -1,124 +0,0 @@
--const { React, Flux, i18n: { Messages } } = require('powercord/webpack');
--const { FormTitle, Button, Divider, Spinner, Card, Tooltip } = require('powercord/components');
--const { Modal, Confirm } = require('powercord/components/modal');
--const { open: openModal, close: closeModal } = require('powercord/modal');
--
--const { SPOTIFY_DEFAULT_IMAGE } = require('../constants');
--const songsStore = require('../songsStore/store');
--const songsStoreActions = require('../songsStore/actions');
--const SpotifyAPI = require('../SpotifyAPI');
--
--class AddToPlaylist extends React.PureComponent {
-- componentDidMount () {
-- if (!this.props.loaded) {
-- songsStoreActions.loadPlaylists();
-- }
-- }
--
-- render () {
-- return (
--
--
-- Add to Playlist
-- closeModal()}/>
--
--
-- Where do you want to save this very nice tune?
--
--
--
--
-- {this.props.track.name}
--
--
-- {Messages.USER_ACTIVITY_LISTENING_ARTISTS.format({
-- artists: this.props.track.artists,
-- artistsHook: t => t
-- })}
--
--
--
--
--
-- {!this.props.loaded
-- ?
-- : Object.keys(this.props.playlists).map(p => this.renderItem(p))}
--
--
--
-- closeModal()} look={Button.Looks.LINK} color={Button.Colors.TRANSPARENT}>
-- {Messages.USER_ACTIVITY_NEVER_MIND}
--
--
--
-- );
-- }
--
-- renderItem (playlistId) {
-- const playlist = this.props.playlists[playlistId];
-- if (!playlist.editable) {
-- return null;
-- }
--
-- return (
--
--
--
--
-- {playlist.name}
--
--
-- {playlist.tracksLoaded
-- ? `${Object.keys(playlist.tracks).length} tracks`
-- : Messages.DEFAULT_INPUT_PLACEHOLDER}
--
--
-- {playlist.tracksLoaded
-- ? (
-- this.handleAddToPlaylist(playlistId)}>
-- Add to Playlist
--
-- )
-- : (
--
-- Add to Playlist
--
-- )}
--
-- );
-- }
--
-- handleAddToPlaylist (playlistId) {
-- closeModal();
-- const playlist = this.props.playlists[playlistId];
-- if (playlist.tracks[this.props.track.id]) {
-- openModal(() => (
-- {
-- SpotifyAPI.addToPlaylist(playlistId, this.props.track.uri);
-- closeModal();
-- }}
-- onCancel={closeModal}
-- >
--
-- This item is already in this playlist. Do you want to add it anyway?
--
--
-- ));
-- } else {
-- SpotifyAPI.addToPlaylist(playlistId, this.props.track.uri);
-- }
-- console.log(playlistId, this.props.playlists[playlistId]);
-- }
--}
--
--module.exports = Flux.connectStores(
-- [ songsStore ],
-- () => ({
-- loaded: songsStore.getPlaylistsLoaded(),
-- playlists: songsStore.getPlaylists()
-- })
--)(AddToPlaylist);
-diff --git a/src/Powercord/plugins/pc-spotify/components/ContextMenu.jsx b/src/Powercord/plugins/pc-spotify/components/ContextMenu.jsx
-deleted file mode 100644
-index 6d27bc1..0000000
---- a/src/Powercord/plugins/pc-spotify/components/ContextMenu.jsx
-+++ /dev/null
-@@ -1,285 +0,0 @@
--const { clipboard, shell } = require('electron');
--const { React, Flux, getModule, messages, channels, contextMenu: { closeContextMenu }, i18n: { Messages } } = require('powercord/webpack');
--const { open: openModal } = require('powercord/modal');
--const { Menu } = require('powercord/components');
--const { formatTime } = require('powercord/util');
--
--const songsStore = require('../songsStore/store');
--const songsStoreActions = require('../songsStore/actions');
--const playerStore = require('../playerStore/store');
--const SpotifyAPI = require('../SpotifyAPI');
--const AddToPlaylist = require('./AddToPlaylist');
--
--class ContextMenu extends React.PureComponent {
-- constructor (props) {
-- super(props);
-- this.handleVolumeSlide = global._.debounce(this.handleVolumeSlide.bind(this), 200);
-- }
--
-- handleVolumeSlide (volume) {
-- SpotifyAPI.setVolume(Math.round(volume));
-- }
--
-- componentDidMount () {
-- if (powercord.account && powercord.account.accounts.spotify) {
-- if (!this.props.songsLoaded) {
-- songsStoreActions.loadSongs();
-- }
-- if (!this.props.topSongsLoaded) {
-- songsStoreActions.loadTopSongs();
-- }
-- if (!this.props.albumsLoaded) {
-- songsStoreActions.loadAlbums();
-- }
-- }
-- if (!this.props.playlistsLoaded) {
-- songsStoreActions.loadPlaylists();
-- }
-- }
--
-- render () {
-- const isPremium = getModule([ 'isSpotifyPremium' ], false).isSpotifyPremium();
--
-- return (
--
-- {isPremium && this.renderDevices()}
-- {isPremium && this.renderSongs()}
-- {isPremium && this.renderPlaybackSettings()}
-- {isPremium && this.renderVolume()}
-- {isPremium && this.renderSave()}
-- {this.renderActions()}
--
-- );
-- }
--
-- renderDevices () {
-- return (
--
--
-- {this.props.devices.sort(d => -Number(d.is_active)).map((device, i) => (
-- <>
--
-- {i === 0 && }
-- >
-- ))}
--
--
-- );
-- }
--
-- renderSongs () {
-- const hasCoolFeatures = powercord.account && powercord.account.accounts.spotify;
--
-- return (
--
--
-- {this.props.playlistsLoaded
-- ? this._renderList(this.props.playlists)
-- : null}
--
-- {hasCoolFeatures &&
-- {this.props.albumsLoaded
-- ? this._renderList(this.props.albums)
-- : null}
-- }
-- {hasCoolFeatures &&
-- {this.props.topSongsLoaded
-- ? this._renderSongs(this.props.topSongs)
-- : null}
-- }
-- {hasCoolFeatures &&
-- {this.props.songsLoaded
-- ? this._renderSongs(this.props.songs)
-- : null}
-- }
--
-- );
-- }
--
-- _renderList (list) {
-- return Object.entries(list).map(([ id, item ]) => (
-- setTimeout(() => SpotifyAPI.play({ context_uri: item.uri }), 10)}
-- >
-- {item.tracksLoaded
-- ? this._renderSongs(item.tracks, item.uri)
-- : null}
--
-- ));
-- }
--
-- _renderSongs (list, uri) {
-- return Object.entries(list).map(([ id, item ]) => (
-- setTimeout(() => {
-- if (uri) {
-- SpotifyAPI.play({
-- context_uri: uri,
-- offset: { uri: item.uri }
-- });
-- } else {
-- SpotifyAPI.play({
-- uris: [ item.uri ]
-- });
-- }
-- }, 10)}
-- />
-- ));
-- }
--
-- renderPlaybackSettings () {
-- if (!powercord.account || !powercord.account.accounts.spotify) {
-- return null;
-- }
--
-- const cannotAll = !this.props.playerState.canRepeat && !this.props.playerState.canRepeatOne;
-- const isOff = this.props.playerState.repeat === playerStore.RepeatState.NO_REPEAT;
-- const isContext = this.props.playerState.repeat === playerStore.RepeatState.REPEAT_CONTEXT;
-- const isTrack = this.props.playerState.repeat === playerStore.RepeatState.REPEAT_TRACK;
--
-- return (
--
--
-- SpotifyAPI.setRepeatState('off')}
-- disabled={isOff}
-- />
-- SpotifyAPI.setRepeatState('context')}
-- disabled={isContext || !this.props.playerState.canRepeat}
-- />
-- SpotifyAPI.setRepeatState('track')}
-- disabled={isTrack || !this.props.playerState.canRepeatOne}
-- />
--
-- SpotifyAPI.setShuffleState(!this.props.playerState.shuffle)}
-- disabled={!this.props.playerState.canShuffle}
-- />
--
-- );
-- }
--
-- renderVolume () {
-- const Slider = getModule(m => m.render && m.render.toString().includes('sliderContainer'), false);
-- return (
--
-- (
--
-- )}
-- />
--
-- );
-- }
--
-- renderSave () {
-- if (!powercord.account || !powercord.account.accounts.spotify) {
-- return null;
-- }
--
-- return (
--
-- {this.props.currentLibraryState === playerStore.LibraryState.IN_LIBRARY
-- ? SpotifyAPI.removeSong(this.props.currentTrack.id)}
-- disabled={[ playerStore.LibraryState.UNKNOWN, playerStore.LibraryState.LOCAL_SONG ].includes(this.props.currentLibraryState)}
-- />
-- : SpotifyAPI.addSong(this.props.currentTrack.id)}
-- disabled={[ playerStore.LibraryState.UNKNOWN, playerStore.LibraryState.LOCAL_SONG ].includes(this.props.currentLibraryState)}
-- />}
-- openModal(() => React.createElement(AddToPlaylist, { track: this.props.currentTrack }))}
-- />
--
-- );
-- }
--
-- renderActions () {
-- return (
--
-- {
-- const protocol = getModule([ 'isProtocolRegistered', '_dispatchToken' ], false).isProtocolRegistered();
-- shell.openExternal(protocol ? this.props.currentTrack.uri : this.props.currentTrack.urls.track);
-- }}
-- />
-- messages.sendMessage(
-- channels.getChannelId(),
-- { content: this.props.currentTrack.urls.album }
-- )}
-- />
-- messages.sendMessage(
-- channels.getChannelId(),
-- { content: this.props.currentTrack.urls.track }
-- )}
-- />
-- clipboard.writeText(this.props.currentTrack.urls.album)}
-- />
-- clipboard.writeText(this.props.currentTrack.urls.track)}
-- />
--
-- );
-- }
--}
--
--module.exports = Flux.connectStores(
-- [ songsStore, playerStore, powercord.api.settings.store ],
-- (props) => ({
-- ...songsStore.getStore(),
-- ...playerStore.getStore(),
-- ...powercord.api.settings._fluxProps(props.entityID)
-- })
--)(ContextMenu);
-diff --git a/src/Powercord/plugins/pc-spotify/components/PayUp.jsx b/src/Powercord/plugins/pc-spotify/components/PayUp.jsx
-deleted file mode 100644
-index c5af79a..0000000
---- a/src/Powercord/plugins/pc-spotify/components/PayUp.jsx
-+++ /dev/null
-@@ -1,47 +0,0 @@
--const { React, getModule, constants: { SpotifyEndpoints }, i18n: { Messages } } = require('powercord/webpack');
--const { FormTitle, Button } = require('powercord/components');
--const { Modal } = require('powercord/components/modal');
--const { close: closeModal } = require('powercord/modal');
--
--module.exports = React.memo(
-- () => {
-- const { size16 } = getModule([ 'size16' ], false);
-- const { marginBottom20 } = getModule([ 'marginBottom20' ], false);
--
-- return (
--
--
-- Spotify Premium Required
-- closeModal()}/>
--
--
--
-- To control your Spotify playback we use Spotify's "Connect Web" API, which is unfortunately locked to
-- Spotify Premium users. In order for you to control Spotify's playback you'll need to get a Premium
-- subscription.
--
--
-- If you do happen to have a Spotify Premium subscription but you're still not seeing the buttons show up,
-- it might happen that Spotify is reporting inaccurate data about your Premium status and alters the
-- availability of the buttons. Try changing the playback in any way (play, pause, change track, ...) to
-- trigger and update and let us get accurate data from Spotify.
--
--
-- If this still did not fix it, make sure you're not in a private session as we've received a few reports
-- saying this causes your Premium subscription status to not be properly sent to us. Also make sure you do
-- have your Spotify account linked to your Discord account (You can tell Discord to not show it on your
-- profile and not show the song you're listening to in your status, if you don't want to)
--
--
--
-- window.open(SpotifyEndpoints.PREMIUM_SITE)}>
-- {Messages.SPOTIFY_PREMIUM_UPGRADE_BUTTON}
--
-- closeModal()} look={Button.Looks.LINK} color={Button.Colors.TRANSPARENT}>
-- {Messages.PREMIUM_DOWNGRADE_DONE_BUTTON}
--
--
--
-- );
-- }
--);
-diff --git a/src/Powercord/plugins/pc-spotify/components/SeekBar.jsx b/src/Powercord/plugins/pc-spotify/components/SeekBar.jsx
-deleted file mode 100644
-index 48b96cb..0000000
---- a/src/Powercord/plugins/pc-spotify/components/SeekBar.jsx
-+++ /dev/null
-@@ -1,121 +0,0 @@
--const { React } = require('powercord/webpack');
--const { formatTime } = require('powercord/util');
--const SpotifyAPI = require('../SpotifyAPI');
--
--class SeekBar extends React.PureComponent {
-- constructor (props) {
-- super(props);
--
-- this.state = {
-- seeking: false,
-- progress: null,
-- wasPlaying: false,
-- listeners: {}
-- };
--
-- this._overflowFired = false;
-- this.seek = this.seek.bind(this);
-- this.endSeek = this.endSeek.bind(this, false);
-- }
--
-- componentDidMount () {
-- this._renderInterval = setInterval(() => this.forceUpdate(), 500);
-- }
--
-- componentDidUpdate (prevProps) {
-- if (!this.state.seeking && this.props.progress !== prevProps.progress) {
-- this.setState({ progress: null });
-- }
-- }
--
-- componentWillUnmount () {
-- if (this.state.listeners.seek) {
-- document.removeEventListener('mousemove', this.seek);
-- }
--
-- if (this.state.listeners.stop) {
-- document.removeEventListener('mouseup', this.endSeek);
-- }
--
-- if (this._renderInterval) {
-- clearInterval(this._renderInterval);
-- }
-- }
--
-- async startSeek (e) {
-- if (!this.props.isPremium) {
-- return;
-- }
--
-- this.seek(e);
-- document.addEventListener('mousemove', this.seek);
-- document.addEventListener('mouseup', this.endSeek);
--
-- this.props.onSeeking(true);
-- this.setState({
-- seeking: true,
-- wasPlaying: this.props.isPlaying
-- });
-- if (this.props.isPlaying && !await SpotifyAPI.pause()) {
-- await this.endSeek(true);
-- }
-- }
--
-- seek ({ clientX: mouseX }) {
-- const { x, width } = document.querySelector('.spotify-seek-bar').getBoundingClientRect();
-- const delta = mouseX - x;
-- const seek = delta / width;
-- this.setState({ progress: Math.round(this.props.duration * Math.max(0, Math.min(seek, 1))) });
-- }
--
-- async endSeek (cancel) {
-- document.removeEventListener('mousemove', this.seek);
-- document.removeEventListener('mouseup', this.endSeek);
--
-- this.props.onSeeking(false);
-- this.setState({ seeking: false });
-- if (cancel) {
-- this.setState({ progress: false });
-- } else {
-- await SpotifyAPI.seek(this.state.progress);
-- if (this.state.wasPlaying) {
-- await SpotifyAPI.play();
-- }
-- }
-- }
--
-- render () {
-- const rawProgress = this.state.progress || this.props.progress;
-- const progress = (this.props.isPlaying && !this.state.seeking)
-- ? rawProgress + (Date.now() - this.props.progressAt)
-- : rawProgress;
-- const trimmedProgress = Math.min(progress, this.props.duration);
-- const current = trimmedProgress / this.props.duration * 100;
-- const isOverflowing = progress - trimmedProgress > 2000;
-- if (isOverflowing && !this._overflowFired) {
-- this._overflowFired = true;
-- this.props.onDurationOverflow();
-- } else if (!isOverflowing && this._overflowFired) {
-- this._overflowFired = false;
-- }
--
-- return (
--
--
--
-- {formatTime(progress)}
--
--
-- {formatTime(this.props.duration)}
--
--
--
this.startSeek(e)}>
--
--
--
--
-- );
-- }
--}
--
--module.exports = SeekBar;
-diff --git a/src/Powercord/plugins/pc-spotify/components/Settings.jsx b/src/Powercord/plugins/pc-spotify/components/Settings.jsx
-deleted file mode 100644
-index 94ceb55..0000000
---- a/src/Powercord/plugins/pc-spotify/components/Settings.jsx
-+++ /dev/null
-@@ -1,35 +0,0 @@
--const { React } = require('powercord/webpack');
--const { SwitchItem } = require('powercord/components/settings');
--
--module.exports = React.memo(
-- ({ getSetting, toggleSetting, patch }) => (
--
-- toggleSetting('squareCovers')}
-- >
-- Squared covers
--
--
-- toggleSetting('showControls')}
-- >
-- Show advanced controls
--
--
-- {
-- patch(getSetting('noAutoPause', true));
-- toggleSetting('noAutoPause');
-- }}
-- >
-- No auto pause
--
--
-- )
--);
-diff --git a/src/Powercord/plugins/pc-spotify/components/ShareModal.jsx b/src/Powercord/plugins/pc-spotify/components/ShareModal.jsx
-deleted file mode 100644
-index dbbfd8b..0000000
---- a/src/Powercord/plugins/pc-spotify/components/ShareModal.jsx
-+++ /dev/null
-@@ -1,65 +0,0 @@
--const { React, messages, channels } = require('powercord/webpack');
--const { FormTitle, Text } = require('powercord/components');
--const { Modal } = require('powercord/components/modal');
--const { close: closeModal } = require('powercord/modal');
--const { SPOTIFY_DEFAULT_IMAGE } = require('../constants');
--
--class Track extends React.PureComponent {
-- handleClick (item) {
-- return messages.sendMessage(
-- channels.getChannelId(),
-- { content: item.external_urls.spotify }
-- ).then(() => closeModal());
-- }
--
-- render () {
-- const image = this.props.item.album.images[0]
-- ?
-- : ;
-- return (
-- this.handleClick(this.props.item)}>
-- {image}
-- {this.props.item.name}
--
-- );
-- }
--}
--
--module.exports = class ShareModal extends React.PureComponent {
-- constructor () {
-- super();
--
-- this.state = {
-- tracks: []
-- };
-- }
--
-- async componentDidMount () {
-- this.setState({ tracks: await this.props.tracks.items });
-- }
--
-- render () {
-- const { tracks } = this.state;
-- const trackList = [];
-- tracks.forEach(track => {
-- trackList.push();
-- });
-- return (
--
--
-- Multiple tracks found - "{this.props.query}"
-- closeModal()}/>
--
--
--
-- Please select the track that you wish to share to the current channel.
--
-- Available tracks
--
-- {trackList}
--
--
--
-- );
-- }
--};
-diff --git a/src/Powercord/plugins/pc-spotify/constants.js b/src/Powercord/plugins/pc-spotify/constants.js
-deleted file mode 100644
-index 4245866..0000000
---- a/src/Powercord/plugins/pc-spotify/constants.js
-+++ /dev/null
-@@ -1,21 +0,0 @@
--module.exports = Object.freeze({
-- FluxActions: {
-- DEVICES_FETCHED: 'SPOTIFY_DEVICES_FETCHED',
-- CURRENT_TRACK_UPDATED: 'SPOTIFY_CURRENT_TRACK_UPDATED',
-- PLAYER_STATE_UPDATED: 'SPOTIFY_PLAYER_STATE_UPDATED',
-- LIBRARY_STATE_UPDATED: 'SPOTIFY_LIBRARY_STATE_UPDATED',
-- SONGS_LOADED: 'SPOTIFY_SONGS_LOADED',
-- TOP_SONGS_LOADED: 'SPOTIFY_TOP_SONGS_LOADED',
-- ALBUMS_LOADED: 'SPOTIFY_ALBUMS_LOADED',
-- ALBUM_TRACKS_LOADED: 'SPOTIFY_ALBUMS_TRACKS_LOADED',
-- PLAYLISTS_LOADED: 'SPOTIFY_PLAYLISTS_LOADED',
-- PLAYLIST_TRACKS_LOADED: 'SPOTIFY_PLAYLISTS_TRACKS_LOADED',
-- PLAYLIST_TRACK_ADDED: 'SPOTIFY_PLAYLIST_TRACK_ADDED',
-- PLAYLIST_TRACK_REMOVED: 'SPOTIFY_PLAYLIST_TRACK_REMOVED',
-- PURGE_SONGS: 'SPOTIFY_PURGE_SONGS'
-- },
-- SPOTIFY_BASE_URL: 'https://api.spotify.com/v1',
-- SPOTIFY_PLAYER_URL: 'https://api.spotify.com/v1/me/player',
-- SPOTIFY_DEFAULT_IMAGE: 'https://www.scdn.co/i/_global/favicon.png',
-- SPOTIFY_COLOR: '#1ed860'
--});
-diff --git a/src/Powercord/plugins/pc-spotify/i18n/en-US.json b/src/Powercord/plugins/pc-spotify/i18n/en-US.json
-deleted file mode 100644
-index 8174978..0000000
---- a/src/Powercord/plugins/pc-spotify/i18n/en-US.json
-+++ /dev/null
-@@ -1,6 +0,0 @@
--{
-- "SPOTIFY_NOT_PREMIUM": "You are not Spotify Premium.",
-- "SPOTIFY_ADD_LIKED_SONGS": "Save to Liked Songs",
-- "SPOTIFY_REMOVE_LIKED_SONGS": "Remove from Liked Songs",
-- "SPOTIFY_CANT_LIKE_LOCAL": "You can't add a local song to your Liked Songs"
--}
-diff --git a/src/Powercord/plugins/pc-spotify/i18n/index.js b/src/Powercord/plugins/pc-spotify/i18n/index.js
-deleted file mode 100644
-index d59ce4c..0000000
---- a/src/Powercord/plugins/pc-spotify/i18n/index.js
-+++ /dev/null
-@@ -1,7 +0,0 @@
--require('fs')
-- .readdirSync(__dirname)
-- .filter((file) => file !== 'index.js' && file !== '.DS_Store')
-- .forEach(filename => {
-- const moduleName = filename.split('.')[0];
-- exports[moduleName] = require(`${__dirname}/${filename}`);
-- });
-diff --git a/src/Powercord/plugins/pc-spotify/index.js b/src/Powercord/plugins/pc-spotify/index.js
-deleted file mode 100644
-index 331f773..0000000
---- a/src/Powercord/plugins/pc-spotify/index.js
-+++ /dev/null
-@@ -1,260 +0,0 @@
--const { Plugin } = require('powercord/entities');
--const { React, getModule, spotify, spotifySocket } = require('powercord/webpack');
--const { inject, uninject } = require('powercord/injector');
--const { waitFor, getOwnerInstance, findInTree, sleep } = require('powercord/util');
--const playerStoreActions = require('./playerStore/actions');
--const playerStore = require('./playerStore/store');
--const songsStoreActions = require('./songsStore/actions');
--const songsStore = require('./songsStore/store');
--const i18n = require('./i18n');
--const commands = require('./commands');
--
--const SpotifyAPI = require('./SpotifyAPI');
--
--const Settings = require('./components/Settings');
--const Modal = require('./components/Modal');
--
--class Spotify extends Plugin {
-- get color () {
-- return '#1ed860';
-- }
--
-- get playerStore () {
-- return playerStore;
-- }
--
-- get songsStore () {
-- return songsStore;
-- }
--
-- get SpotifyAPI () {
-- return SpotifyAPI;
-- }
--
-- startPlugin () {
-- powercord.api.i18n.loadAllStrings(i18n);
-- this.loadStylesheet('style.scss');
-- this._injectSocket();
-- this._injectModal();
-- this._patchAutoPause();
-- spotify.fetchIsSpotifyProtocolRegistered();
--
-- SpotifyAPI.getPlayer()
-- .then((player) => this._handlePlayerState(player))
-- .catch((e) => this.error('Failed to get player', e));
--
-- playerStoreActions.fetchDevices()
-- .catch((e) => this.error('Failed to fetch devices', e));
--
-- powercord.api.settings.registerSettings('pc-spotify', {
-- category: this.entityID,
-- label: 'Spotify',
-- render: (props) =>
-- React.createElement(Settings, {
-- patch: this._patchAutoPause.bind(this),
-- ...props
-- })
-- });
--
-- Object.values(commands).forEach(cmd => powercord.api.commands.registerCommand(cmd));
-- }
--
-- pluginWillUnload () {
-- uninject('pc-spotify-socket');
-- uninject('pc-spotify-modal');
-- // this._applySocketChanges();
-- this._patchAutoPause(true);
-- Object.values(commands).forEach(cmd => powercord.api.commands.unregisterCommand(cmd.command));
-- powercord.api.settings.unregisterSettings('pc-spotify');
-- spotifySocket.getActiveSocketAndDevice()?.socket.socket.close();
-- songsStoreActions.purgeSongs();
--
-- const { container } = getModule([ 'container', 'usernameContainer' ], false);
-- const accountContainer = document.querySelector(`section > .${container}`);
-- const instance = getOwnerInstance(accountContainer);
-- instance.forceUpdate();
-- }
--
-- async _injectSocket () {
-- const { SpotifySocket } = await getModule([ 'SpotifySocket' ]);
-- inject('pc-spotify-socket', SpotifySocket.prototype, 'handleMessage', ([ e ]) => this._handleSpotifyMessage(e));
-- spotifySocket.getActiveSocketAndDevice()?.socket.socket.close();
-- }
--
-- async _injectModal () {
-- await sleep(1e3); // It ain't stupid if it works
-- const { container } = await getModule([ 'container', 'usernameContainer' ]);
-- const accountContainer = await waitFor(`section > .${container}`);
-- const instance = getOwnerInstance(accountContainer);
-- await inject('pc-spotify-modal', instance.__proto__, 'render', (_, res) => {
-- const realRes = findInTree(res, t => t.props && t.props.className === container);
-- return [
-- React.createElement(Modal, {
-- entityID: this.entityID,
-- base: realRes
-- }),
-- res
-- ];
-- });
-- instance.forceUpdate();
-- }
--
-- _patchAutoPause (revert) {
-- if (this.settings.get('noAutoPause', true)) {
-- const spotifyMdl = getModule([ 'initialize', 'wasAutoPaused' ], false);
-- if (revert) {
-- spotifyMdl.wasAutoPaused = spotifyMdl._wasAutoPaused;
-- spotify.pause = spotify._pause;
-- } else {
-- spotifyMdl._wasAutoPaused = spotifyMdl.wasAutoPaused;
-- spotifyMdl.wasAutoPaused = () => false;
-- spotify._pause = spotify.pause;
-- spotify.pause = () => void 0;
-- }
-- }
-- }
--
-- _handleSpotifyMessage (msg) {
-- const data = JSON.parse(msg.data);
-- if (!data.type === 'message' || !data.payloads) {
-- return;
-- }
--
-- const collectionRegex = /hm:\/\/collection\/collection\/[\w\d]+\/json/i;
-- const playlistRegex = /hm:\/\/playlist\/v2\/playlist\/[\w\d]+/i;
-- switch (true) {
-- case data.uri === 'wss://event':
-- for (const payload of data.payloads || []) {
-- for (const event of payload.events || []) {
-- this._handleSpotifyEvent(event);
-- }
-- }
-- break;
-- case collectionRegex.test(data.uri): {
-- const currentTrack = playerStore.getCurrentTrack();
-- if (!currentTrack) {
-- // Useless to further process the event
-- return;
-- }
--
-- for (const rawPayload of data.payloads || []) {
-- const payload = JSON.parse(rawPayload);
-- for (const track of payload.items) {
-- if (track.identifier === currentTrack.id) {
-- playerStoreActions.updateCurrentLibraryState(
-- track.removed ? playerStore.LibraryState.NOT_IN_LIBRARY : playerStore.LibraryState.IN_LIBRARY
-- );
-- }
-- }
-- }
-- break;
-- }
-- case playlistRegex.test(data.uri):
-- for (const hermes of data.payloads || []) {
-- const payload = this._decodePlaylistHermes(hermes);
-- if (payload.added) {
-- songsStoreActions.addTrack(payload.playlistId, payload.trackId);
-- } else {
-- songsStoreActions.deleteTrack(payload.playlistId, payload.trackId);
-- }
-- }
-- break;
-- }
-- }
--
-- _handleSpotifyEvent (evt) {
-- switch (evt.type) {
-- case 'PLAYER_STATE_CHANGED':
-- this._handlePlayerState(evt.event.state);
-- break;
-- case 'DEVICE_STATE_CHANGED':
-- playerStoreActions.fetchDevices();
-- break;
-- }
-- }
--
-- _handlePlayerState (state) {
-- if (!state.timestamp) {
-- return;
-- }
--
-- // Handle track
-- const currentTrack = playerStore.getCurrentTrack();
-- if (!currentTrack || currentTrack.id !== state.item.id) {
-- if (this._libraryTimeout) {
-- clearTimeout(this._libraryTimeout);
-- }
-- if (!state.item.is_local && powercord.account && powercord.account.accounts.spotify) {
-- this._libraryTimeout = setTimeout(() => {
-- SpotifyAPI.checkLibrary(state.item.id).then(r => playerStoreActions.updateCurrentLibraryState(
-- r.body[0]
-- ? playerStore.LibraryState.IN_LIBRARY
-- : playerStore.LibraryState.NOT_IN_LIBRARY
-- ));
-- }, 1500);
-- } else if (state.item.is_local) {
-- playerStoreActions.updateCurrentLibraryState(playerStore.LibraryState.LOCAL_SONG);
-- }
-- playerStoreActions.updateCurrentTrack({
-- id: state.item.id,
-- uri: state.item.uri,
-- name: state.item.name,
-- isLocal: state.item.is_local,
-- duration: state.item.duration_ms,
-- explicit: state.item.explicit,
-- cover: state.item.album && state.item.album.images[0] ? state.item.album.images[0].url : null,
-- artists: state.item.artists.map(a => a.name).join(', '),
-- album: state.item.album ? state.item.album.name : null,
-- urls: {
-- track: state.item.external_urls.spotify,
-- album: state.item.album ? state.item.album.external_urls.spotify : null
-- }
-- });
-- }
--
-- // Handle state
-- playerStoreActions.updatePlayerState({
-- repeat: state.repeat_state === 'track'
-- ? playerStore.RepeatState.REPEAT_TRACK
-- : state.repeat_state === 'context'
-- ? playerStore.RepeatState.REPEAT_CONTEXT
-- : playerStore.RepeatState.NO_REPEAT,
-- shuffle: state.shuffle_state,
-- canRepeat: !state.actions.disallows.toggling_repeat_context,
-- canRepeatOne: !state.actions.disallows.toggling_repeat_track,
-- canShuffle: !state.actions.disallows.toggling_shuffle,
-- spotifyRecordedProgress: state.progress_ms,
-- playing: state.is_playing,
-- volume: state.device.volume_percent
-- });
-- }
--
-- _decodePlaylistHermes (hermes) {
-- const hex = Buffer.from(hermes, 'base64').toString('hex');
-- const decoded = this._decodeHermes(hex);
-- const trackDetails = this._decodeHermes(decoded[3].hex.substring(18));
-- return {
-- playlistId: decoded[0].utf8.split(':').pop(),
-- trackId: trackDetails[0].utf8.replace(/[\n$]/g, '').split(':').pop(),
-- added: trackDetails.length === 2
-- };
-- }
--
-- _decodeHermes (hex) {
-- const res = [];
-- for (let i = 0; i < hex.length;) {
-- const length = parseInt(hex.substring(i + 2, i + 4), 16);
-- const rawStr = hex.substring(i + 4, i + 4 + (length * 2));
-- i += (length * 2) + 4;
-- res.push({
-- hex: rawStr,
-- get utf8 () {
-- return Buffer.from(rawStr, 'hex').toString('utf8');
-- }
-- });
-- }
-- return res;
-- }
--}
--
--module.exports = Spotify;
-diff --git a/src/Powercord/plugins/pc-spotify/manifest.json b/src/Powercord/plugins/pc-spotify/manifest.json
-deleted file mode 100644
-index d3b4bf4..0000000
---- a/src/Powercord/plugins/pc-spotify/manifest.json
-+++ /dev/null
-@@ -1,7 +0,0 @@
--{
-- "name": "Spotify Modal",
-- "version": "2.0.0",
-- "description": "Better Spotify integration in Discord",
-- "author": "Powercord Team",
-- "license": "MIT"
--}
-diff --git a/src/Powercord/plugins/pc-spotify/playerStore/actions.js b/src/Powercord/plugins/pc-spotify/playerStore/actions.js
-deleted file mode 100644
-index efaa990..0000000
---- a/src/Powercord/plugins/pc-spotify/playerStore/actions.js
-+++ /dev/null
-@@ -1,37 +0,0 @@
--const { FluxDispatcher } = require('powercord/webpack');
--const { FluxActions } = require('../constants');
--const SpotifyAPI = require('../SpotifyAPI');
--
--module.exports = {
-- fetchDevices: async () => {
-- const { devices } = await SpotifyAPI.getDevices();
-- FluxDispatcher.dirtyDispatch({
-- type: FluxActions.DEVICES_FETCHED,
-- devices
-- });
-- },
--
-- updateCurrentTrack: (newTrack) => {
-- FluxDispatcher.dirtyDispatch({
-- type: FluxActions.CURRENT_TRACK_UPDATED,
-- track: newTrack
-- });
-- },
--
-- updatePlayerState: (newState) => {
-- FluxDispatcher.dirtyDispatch({
-- type: FluxActions.PLAYER_STATE_UPDATED,
-- state: {
-- ...newState,
-- spotifyRecordedProgressAt: Date.now()
-- }
-- });
-- },
--
-- updateCurrentLibraryState: (newState) => {
-- FluxDispatcher.dirtyDispatch({
-- type: FluxActions.LIBRARY_STATE_UPDATED,
-- state: newState
-- });
-- }
--};
-diff --git a/src/Powercord/plugins/pc-spotify/playerStore/store.js b/src/Powercord/plugins/pc-spotify/playerStore/store.js
-deleted file mode 100644
-index 96bb284..0000000
---- a/src/Powercord/plugins/pc-spotify/playerStore/store.js
-+++ /dev/null
-@@ -1,98 +0,0 @@
--const { Flux, FluxDispatcher } = require('powercord/webpack');
--const { FluxActions } = require('../constants');
--
--const LibraryState = Object.freeze({
-- UNKNOWN: 'UNKNOWN',
-- IN_LIBRARY: 'IN_LIBRARY',
-- NOT_IN_LIBRARY: 'NOT_IN_LIBRARY',
-- LOCAL_SONG: 'LOCAL_SONG'
--});
--
--const RepeatState = Object.freeze({
-- NO_REPEAT: 'NO_REPEAT',
-- REPEAT_TRACK: 'REPEAT_TRACK',
-- REPEAT_CONTEXT: 'REPEAT_CONTEXT'
--});
--
--let lastActiveDeviceId = null;
--let devices = [];
--let currentTrack = null;
--let currentLibraryState = LibraryState.UNKNOWN;
--let playerState = {
-- repeat: RepeatState.NO_REPEAT,
-- shuffle: false,
-- canRepeat: true,
-- canRepeatOne: true,
-- canShuffle: true,
-- spotifyRecordedProgress: 0,
-- spotifyRecordedProgressAt: Date.now(),
-- playing: false,
-- volume: 100
--};
--
--function handleDevicesFetched (fetchedDevices) {
-- devices = fetchedDevices;
-- const activeDevice = devices.find(d => d.is_active);
-- if (activeDevice) {
-- lastActiveDeviceId = activeDevice.id;
-- }
--}
--
--function handleCurrentTrackUpdated (track) {
-- currentLibraryState = LibraryState.UNKNOWN;
-- currentTrack = track;
--}
--
--function handlePlayerStateUpdated (state) {
-- playerState = state;
--}
--
--function handleLibraryStateUpdated (state) {
-- currentLibraryState = state;
--}
--
--class SpotifyPlayerStore extends Flux.Store {
-- get LibraryState () {
-- return LibraryState;
-- }
--
-- get RepeatState () {
-- return RepeatState;
-- }
--
-- getStore () {
-- return {
-- devices,
-- currentTrack,
-- currentLibraryState,
-- playerState
-- };
-- }
--
-- getDevices () {
-- return devices;
-- }
--
-- getLastActiveDeviceId () {
-- return lastActiveDeviceId;
-- }
--
-- getCurrentTrack () {
-- return currentTrack;
-- }
--
-- getCurrentLibraryState () {
-- return currentLibraryState;
-- }
--
-- getPlayerState () {
-- return playerState;
-- }
--}
--
--module.exports = new SpotifyPlayerStore(FluxDispatcher, {
-- [FluxActions.DEVICES_FETCHED]: ({ devices }) => handleDevicesFetched(devices),
-- [FluxActions.CURRENT_TRACK_UPDATED]: ({ track }) => handleCurrentTrackUpdated(track),
-- [FluxActions.PLAYER_STATE_UPDATED]: ({ state }) => handlePlayerStateUpdated(state),
-- [FluxActions.LIBRARY_STATE_UPDATED]: ({ state }) => handleLibraryStateUpdated(state)
--});
-diff --git a/src/Powercord/plugins/pc-spotify/songsStore/actions.js b/src/Powercord/plugins/pc-spotify/songsStore/actions.js
-deleted file mode 100644
-index 6ebeb6b..0000000
---- a/src/Powercord/plugins/pc-spotify/songsStore/actions.js
-+++ /dev/null
-@@ -1,115 +0,0 @@
--const { FluxDispatcher } = require('powercord/webpack');
--const { FluxActions } = require('../constants');
--const SpotifyAPI = require('../SpotifyAPI');
--
--function formatTracks (spotifyTracks) {
-- return Object.fromEntries(
-- spotifyTracks.map(t => [
-- t.id || t.uri,
-- {
-- uri: t.uri,
-- name: t.name,
-- isLocal: t.is_local,
-- duration: t.duration_ms,
-- explicit: t.explicit
-- }
-- ])
-- );
--}
--
--module.exports = {
-- loadSongs: async () => {
-- const songs = await SpotifyAPI.getSongs();
-- FluxDispatcher.dirtyDispatch({
-- type: FluxActions.SONGS_LOADED,
-- songs: formatTracks(songs.map(s => s.track))
-- });
-- },
--
-- loadTopSongs: async () => {
-- const topSongs = await SpotifyAPI.getTopSongs();
-- FluxDispatcher.dirtyDispatch({
-- type: FluxActions.TOP_SONGS_LOADED,
-- topSongs: formatTracks(topSongs.items)
-- });
-- },
--
-- loadAlbums: async () => {
-- const albums = await SpotifyAPI.getAlbums();
-- FluxDispatcher.dirtyDispatch({
-- type: FluxActions.ALBUMS_LOADED,
-- albums: Object.fromEntries(
-- albums.map(({ album }) => [
-- album.id,
-- {
-- uri: album.uri,
-- name: album.name,
-- tracks: formatTracks(album.tracks.items),
-- tracksLoaded: !album.tracks.next
-- }
-- ])
-- )
-- });
--
-- albums.filter(({ album: { tracks: { next } } }) => !next).forEach(async ({ album: { id, tracks } }) => {
-- const albumTracks = await SpotifyAPI.getAlbumTracks(id, tracks.limit, tracks.limit);
-- FluxDispatcher.dirtyDispatch({
-- type: FluxActions.ALBUM_TRACKS_LOADED,
-- albumId: id,
-- tracks: formatTracks(tracks.items.concat(albumTracks))
-- });
-- });
-- },
--
-- loadPlaylists: async () => {
-- const playlists = await SpotifyAPI.getPlaylists();
-- FluxDispatcher.dirtyDispatch({
-- type: FluxActions.PLAYLISTS_LOADED,
-- playlists: Object.fromEntries(
-- playlists.map(playlist => [
-- playlist.id,
-- {
-- uri: playlist.uri,
-- name: playlist.name,
-- icon: playlist.images[0] ? playlist.images[0].url : null,
-- editable: playlist.owner.display_name === powercord.account.accounts.spotify || playlist.collaborative,
-- tracksLoaded: false
-- }
-- ])
-- )
-- });
--
-- playlists.forEach(async ({ id }) => {
-- const playlistTracks = await SpotifyAPI.getPlaylistTracks(id);
-- FluxDispatcher.dirtyDispatch({
-- type: FluxActions.PLAYLIST_TRACKS_LOADED,
-- playlistId: id,
-- tracks: formatTracks(playlistTracks.map(pt => pt.track))
-- });
-- });
-- },
--
-- addTrack: async (playlistId, trackId) => {
-- const track = await SpotifyAPI.getTrack(trackId);
-- FluxDispatcher.dirtyDispatch({
-- type: FluxActions.PLAYLIST_TRACK_ADDED,
-- playlistId,
-- trackId,
-- trackDetails: {
-- name: track.name,
-- duration: track.duration_ms,
-- explicit: track.explicit
-- }
-- });
-- },
--
-- deleteTrack: (playlistId, trackId) => {
-- FluxDispatcher.dirtyDispatch({
-- type: FluxActions.PLAYLIST_TRACK_REMOVED,
-- playlistId,
-- trackId
-- });
-- },
--
-- purgeSongs: () => FluxDispatcher.dirtyDispatch({ type: FluxActions.PURGE_SONGS })
--};
-diff --git a/src/Powercord/plugins/pc-spotify/songsStore/store.js b/src/Powercord/plugins/pc-spotify/songsStore/store.js
-deleted file mode 100644
-index 1c66283..0000000
---- a/src/Powercord/plugins/pc-spotify/songsStore/store.js
-+++ /dev/null
-@@ -1,161 +0,0 @@
--const { Flux, FluxDispatcher } = require('powercord/webpack');
--const { FluxActions } = require('../constants');
--
--let songsLoaded = false;
--let topSongsLoaded = false;
--let albumsLoaded = false;
--let playlistsLoaded = false;
--
--let songs = {};
--let topSongs = {};
--let albums = {};
--let playlists = {};
--
--function handleTopSongsLoaded (topSongsData) {
-- topSongsLoaded = true;
-- topSongs = topSongsData;
--}
--
--function handleSongsLoaded (songsData) {
-- songsLoaded = true;
-- songs = songsData;
--}
--
--function handleAlbumsLoaded (albumsData) {
-- albumsLoaded = true;
-- albums = albumsData;
--}
--
--function handleAlbumTracksLoaded (albumId, tracks) {
-- albums = {
-- ...albums,
-- [albumId]: {
-- ...albums[albumId],
-- tracksLoaded: true,
-- tracks
-- }
-- };
--}
--
--function handlePlaylistsLoaded (playlistsData) {
-- playlistsLoaded = true;
-- playlists = playlistsData;
--}
--
--function handlePlaylistTracksLoaded (playlistId, tracks) {
-- playlists = {
-- ...playlists,
-- [playlistId]: {
-- ...playlists[playlistId],
-- tracksLoaded: true,
-- tracks
-- }
-- };
--}
--
--function handlePlaylistTrackAdded (playlistId, trackId, trackDetails) {
-- if (playlists[playlistId]) { // If the playlist doesn't exist it means it hasn't been loaded; Let's skip the event
-- playlists = {
-- ...playlists,
-- [playlistId]: {
-- ...playlists[playlistId],
-- tracks: {
-- ...playlists[playlistId].tracks,
-- [trackId]: trackDetails
-- }
-- }
-- };
-- }
--}
--
--function handlePlaylistTrackRemoved (playlistId, trackId) {
-- if (playlists[playlistId]) { // If the playlist doesn't exist it means it hasn't been loaded; Let's skip the event
-- delete playlists[playlistId].tracks[trackId];
-- playlists = global._.cloneDeep(playlists);
-- }
--}
--
--function handlePurgeSongs () {
-- songsLoaded = false;
-- topSongsLoaded = false;
-- albumsLoaded = false;
-- playlistsLoaded = false;
-- songs = {};
-- topSongs = {};
-- albums = {};
-- playlists = {};
--}
--
--class SpotifyPlaylistsStore extends Flux.Store {
-- getStore () {
-- return {
-- songsLoaded,
-- topSongsLoaded,
-- albumsLoaded,
-- playlistsLoaded,
-- songs,
-- topSongs,
-- albums,
-- playlists
-- };
-- }
--
-- getSongsLoaded () {
-- return songsLoaded;
-- }
--
-- getSongs () {
-- return songs;
-- }
--
-- getTopSongsLoaded () {
-- return topSongsLoaded;
-- }
--
-- getTopSongs () {
-- return topSongs;
-- }
--
-- getPlaylistsLoaded () {
-- return playlistsLoaded;
-- }
--
-- getPlaylists () {
-- return playlists;
-- }
--
-- getPlaylist (playlistId) {
-- return playlists[playlistId];
-- }
--
-- isInPlaylist (playlistId, trackId) {
-- if (!playlists[playlistId]) {
-- return false;
-- }
-- return Object.keys(playlists[playlistId].tracks).includes(trackId);
-- }
--
-- getAlbumsLoaded () {
-- return albumsLoaded;
-- }
--
-- getAlbumbs () {
-- return albums;
-- }
--
-- getAlbum (albumId) {
-- return albums[albumId];
-- }
--}
--
--module.exports = new SpotifyPlaylistsStore(FluxDispatcher, {
-- [FluxActions.SONGS_LOADED]: ({ songs }) => handleSongsLoaded(songs),
-- [FluxActions.TOP_SONGS_LOADED]: ({ topSongs }) => handleTopSongsLoaded(topSongs),
-- [FluxActions.ALBUMS_LOADED]: ({ albums }) => handleAlbumsLoaded(albums),
-- [FluxActions.ALBUM_TRACKS_LOADED]: ({ albumId, tracks }) => handleAlbumTracksLoaded(albumId, tracks),
-- [FluxActions.PLAYLISTS_LOADED]: ({ playlists }) => handlePlaylistsLoaded(playlists),
-- [FluxActions.PLAYLIST_TRACKS_LOADED]: ({ playlistId, tracks }) => handlePlaylistTracksLoaded(playlistId, tracks),
-- [FluxActions.PLAYLIST_TRACK_ADDED]: ({ playlistId, trackId, trackDetails }) => handlePlaylistTrackAdded(playlistId, trackId, trackDetails),
-- [FluxActions.PLAYLIST_TRACK_REMOVED]: ({ playlistId, trackId }) => handlePlaylistTrackRemoved(playlistId, trackId),
-- [FluxActions.PURGE_SONGS]: () => handlePurgeSongs()
--});
-diff --git a/src/Powercord/plugins/pc-spotify/style.scss b/src/Powercord/plugins/pc-spotify/style.scss
-deleted file mode 100644
-index a4a742a..0000000
---- a/src/Powercord/plugins/pc-spotify/style.scss
-+++ /dev/null
-@@ -1,182 +0,0 @@
--:root {
-- --spotify-color: #1ed860;
--}
--
--.powercord-spotify {
-- img {
-- margin-bottom: -4px;
-- }
--
-- .spotify-buttons button {
-- color: var(--spotify-color) !important;
--
-- > div {
-- color: inherit;
-- }
-- }
--
-- .spotify-extra-controls {
-- pointer-events: none;
-- display: flex;
-- align-items: center;
-- justify-content: center;
-- margin-top: -10px;
-- opacity: 0;
-- height: 0;
-- transition: height .2s, opacity .2s;
--
-- .active {
-- color: var(--spotify-color) !important;
-- }
--
-- + .spotify-seek {
-- margin-top: 3px;
-- }
-- }
--
-- .spotify-seek {
-- margin-top: -6px;
-- transition: margin-top .2s;
--
-- &-elements {
-- display: flex;
-- justify-content: space-between;
-- color: var(--text-normal);
-- font-size: 12px;
-- padding: 0 4px 4px;
-- font-weight: 500;
-- opacity: 0;
-- height: 4px;
-- transition: height .2s, opacity .2s;
-- }
--
-- &-bar {
-- position: relative;
-- height: 2px;
-- transition: height .2s;
--
-- &-progress {
-- height: 100%;
-- display: block;
-- background-color: var(--spotify-color);
-- }
--
-- &-cursor {
-- top: 50%;
-- position: absolute;
-- transform: translateY(-50%) translateX(-50%);
-- width: 8px;
-- height: 8px;
-- border-radius: 50%;
-- border: 2px #b9bbbe solid;
-- background-color: #fff;
-- opacity: 0;
-- transition: opacity .2s;
-- }
-- }
--
-- &:not(.no-premium) {
-- .spotify-seek-bar-progress, .spotify-seek-bar-cursor {
-- cursor: pointer;
-- }
-- }
-- }
--
-- &.hover {
-- .spotify-extra-controls {
-- pointer-events: initial;
-- height: 32px;
-- opacity: 1;
--
-- + .spotify-seek {
-- margin-top: -12px;
-- }
-- }
--
-- .spotify-seek {
-- &-elements {
-- opacity: 1;
-- height: 12px;
-- }
--
-- &:not(.no-premium) {
-- .spotify-seek-bar {
-- height: 4px;
--
-- &-cursor {
-- opacity: 1;
-- }
-- }
-- }
-- }
-- }
--}
--
--.spotify-tooltip {
-- max-width: none !important;
-- white-space: nowrap
--}
--
--.spotify-add-to-playlist {
-- .playlists {
-- margin-top: 20px;
-- }
--
-- .track, .playlist {
-- display: flex;
-- align-items: center;
--
-- img {
-- width: 48px;
-- height: 48px;
-- margin-right: 16px;
-- }
--
-- .details {
-- display: flex;
-- flex-direction: column;
--
-- .title {
-- font-size: 18px;
-- color: var(--header-primary);
-- margin-bottom: 4px;
-- }
--
-- .artist {
-- font-size: 16px;
-- color: var(--header-secondary);
-- }
-- }
-- }
--
-- .playlist {
-- display: flex;
-- padding: 16px;
-- margin-bottom: 16px;
--
-- .details {
-- margin-right: auto;
-- }
-- }
--}
--
--#powercord-spotify-menu {
-- .disabled-1WRMNA[id^='powercord-spotify-menu-devices--'], #powercord-spotify-menu-repeat + div [id*='-active'] {
-- color: var(--spotify-color) !important;
-- opacity: 1 !important;
-- }
--
-- .colorDefault-2K3EoJ .checkbox-3s5GYZ {
-- color: var(--spotify-color);
-- }
--
-- .barFill-23-gu- {
-- background-color: var(--spotify-color);
-- }
--}
--
--.theme-dark {
-- .powercord-spotify img[src*='_global/favicon.png'], .spotify-add-to-playlist img[src*='_global/favicon.png'] {
-- filter: invert(1);
-- }
--}
diff --git a/subflakes/powercord/patches/remove-updater.patch b/subflakes/powercord/patches/remove-updater.patch
deleted file mode 100644
index a8b83bf..0000000
--- a/subflakes/powercord/patches/remove-updater.patch
+++ /dev/null
@@ -1,1186 +0,0 @@
-diff --git a/src/Powercord/plugins/pc-updater/components/Icons.jsx b/src/Powercord/plugins/pc-updater/components/Icons.jsx
-deleted file mode 100644
-index dc8a71d..0000000
---- a/src/Powercord/plugins/pc-updater/components/Icons.jsx
-+++ /dev/null
-@@ -1,52 +0,0 @@
--const { React } = require('powercord/webpack');
--
--module.exports = {
-- UpToDate: () =>
--
-- ,
-- Update: ({ color, animated }) =>
--
--
--
-- ,
-- Paused: () =>
--
-- ,
-- Error: () =>
--
-- ,
--
-- Powercord: (props) =>
--
-- ,
-- Plugin: (props) =>
--
-- ,
-- Theme: (props) =>
--
--
--};
-diff --git a/src/Powercord/plugins/pc-updater/components/Settings.jsx b/src/Powercord/plugins/pc-updater/components/Settings.jsx
-deleted file mode 100644
-index a1b8b9b..0000000
---- a/src/Powercord/plugins/pc-updater/components/Settings.jsx
-+++ /dev/null
-@@ -1,464 +0,0 @@
--const { React, getModule, i18n: { Messages, _chosenLocale: currentLocale } } = require('powercord/webpack');
--const { Button, FormNotice, FormTitle, Tooltip, Icons: { FontAwesome } } = require('powercord/components');
--const { SwitchItem, TextInput, Category, ButtonItem } = require('powercord/components/settings');
--const { open: openModal, close: closeModal } = require('powercord/modal');
--const { Confirm } = require('powercord/components/modal');
--const { REPO_URL, CACHE_FOLDER } = require('powercord/constants');
--const { clipboard } = require('electron');
--const { readdirSync, existsSync, lstatSync } = require('fs');
--
--const Icons = require('./Icons');
--const Update = require('./Update');
--
--module.exports = class UpdaterSettings extends React.PureComponent {
-- constructor () {
-- super();
-- this.plugin = powercord.pluginManager.get('pc-updater');
-- this.state = {
-- opened: false,
-- copied: false
-- };
-- }
--
-- render () {
-- const isUnsupported = window.GLOBAL_ENV.RELEASE_CHANNEL !== 'canary';
-- const moment = getModule([ 'momentProperties' ], false);
-- // @todo: Make this be in its own store
-- const awaitingReload = this.props.getSetting('awaiting_reload', false);
-- const updating = this.props.getSetting('updating', false);
-- const checking = this.props.getSetting('checking', false);
-- const disabled = this.props.getSetting('disabled', false);
-- const paused = this.props.getSetting('paused', false);
-- const failed = this.props.getSetting('failed', false);
--
-- const updates = this.props.getSetting('updates', []);
-- const disabledEntities = this.props.getSetting('entities_disabled', []);
-- const checkingProgress = this.props.getSetting('checking_progress', [ 0, 0 ]);
-- const last = moment(this.props.getSetting('last_check', false)).calendar();
--
-- let icon,
-- title;
-- if (disabled) {
-- icon = ;
-- title = Messages.POWERCORD_UPDATES_DISABLED;
-- } else if (paused) {
-- icon = ;
-- title = Messages.POWERCORD_UPDATES_PAUSED;
-- } else if (checking) {
-- icon = ;
-- title = Messages.POWERCORD_UPDATES_CHECKING;
-- } else if (updating) {
-- icon = ;
-- title = Messages.POWERCORD_UPDATES_UPDATING;
-- } else if (failed) {
-- icon = ;
-- title = Messages.POWERCORD_UPDATES_FAILED;
-- } else if (updates.length > 0) {
-- icon = ;
-- title = Messages.POWERCORD_UPDATES_AVAILABLE;
-- } else {
-- icon = ;
-- title = Messages.POWERCORD_UPDATES_UP_TO_DATE;
-- }
--
-- return
-- {awaitingReload
-- ? this.renderReload()
-- : isUnsupported && this.renderUnsupported()}
--
--
{icon}
--
--
{title}
-- {!disabled && !updating && (!checking || checkingProgress[1] > 0) &&
-- {paused
-- ? Messages.POWERCORD_UPDATES_PAUSED_RESUME
-- : checking
-- ? Messages.POWERCORD_UPDATES_CHECKING_STATUS.format({
-- checked: checkingProgress[0],
-- total: checkingProgress[1]
-- })
-- : Messages.POWERCORD_UPDATES_LAST_CHECKED.format({ date: last })}
--
}
--
--
--
-- {Messages.POWERCORD_UPDATES_UPSTREAM}
-- {powercord.gitInfos.upstream.replace(REPO_URL, Messages.POWERCORD_UPDATES_UPSTREAM_OFFICIAL)}
--
--
-- {Messages.POWERCORD_UPDATES_REVISION}
-- {powercord.gitInfos.revision.substring(0, 7)}
--
--
-- {Messages.POWERCORD_UPDATES_BRANCH}
-- {powercord.gitInfos.branch}
--
--
--
--
-- {disabled || paused
-- ? {
-- this.props.updateSetting('paused', false);
-- this.props.updateSetting('disabled', false);
-- }}
-- >
-- {disabled ? Messages.POWERCORD_UPDATES_ENABLE : Messages.POWERCORD_UPDATES_RESUME}
--
-- : (!checking && !updating && <>
-- {updates.length > 0 && failed ? this.plugin.askForce() : this.plugin.doUpdate()}
-- >
-- {failed ? Messages.POWERCORD_UPDATES_FORCE : Messages.POWERCORD_UPDATES_UPDATE}
-- }
-- this.plugin.checkForUpdates(true)}
-- >
-- {Messages.POWERCORD_UPDATES_CHECK}
--
-- this.askPauseUpdates()}
-- >
-- {Messages.POWERCORD_UPDATES_PAUSE}
--
-- this.askDisableUpdates(true, () => this.props.updateSetting('disabled', true))}
-- >
-- {Messages.POWERCORD_UPDATES_DISABLE}
--
-- >)}
--
-- {!disabled && !paused && !checking && updates.length > 0 &&
-- {updates.map(update => this.askSkipUpdate(() => this.plugin.skipUpdate(update.id, update.commits[0].id))}
-- onDisable={() => this.askDisableUpdates(false, () => this.plugin.disableUpdates(update))}
-- />)}
--
}
--
-- {disabledEntities.length > 0 &&
this.setState({ opened: !this.state.opened })}
-- >
-- {disabledEntities.map(entity =>
--
--
--
-- {React.createElement(Icons[entity.icon])}
--
--
--
{entity.name}
--
-- this.plugin.enableUpdates(entity.id)}>
-- {Messages.POWERCORD_UPDATES_ENABLE}
--
--
--
--
)}
-- }
--
{Messages.OPTIONS}
-- {!disabled && <>
--
this.props.toggleSetting('automatic')}
-- note={Messages.POWERCORD_UPDATES_OPTS_AUTO_DESC}
-- >
-- {Messages.POWERCORD_UPDATES_OPTS_AUTO}
--
--
this.props.updateSetting('interval', (Number(val) && Number(val) >= 10) ? Math.ceil(Number(val)) : 10, 15)}
-- defaultValue={this.props.getSetting('interval', 15)}
-- required={true}
-- >
-- {Messages.POWERCORD_UPDATES_OPTS_INTERVAL}
--
--
this.props.updateSetting('concurrency', (Number(val) && Number(val) >= 1) ? Math.ceil(Number(val)) : 1, 2)}
-- defaultValue={this.props.getSetting('concurrency', 2)}
-- required={true}
-- >
-- {Messages.POWERCORD_UPDATES_OPTS_CONCURRENCY}
--
--
this.plugin.openChangeLogs()}
-- >
-- {Messages.POWERCORD_UPDATES_OPTS_CHANGE_LOGS}
--
-- {/*
this.askChangeChannel(
-- () => this.plugin.changeBranch(powercord.gitInfos.branch === 'v2' ? 'v2-dev' : 'v2')
-- )}
-- >
-- {Messages.POWERCORD_UPDATES_OPTS_RELEASE}
-- */}
--
--
this.setState({ debugInfoOpened: !this.state.debugInfoOpened })}
-- >
-- {this.renderDebugInfo(moment)}
--
-- >}
--
;
-- }
--
-- // --- PARTS
-- renderReload () {
-- const body = <>
-- {Messages.POWERCORD_UPDATES_AWAITING_RELOAD_DESC}
-- location.reload()}
-- >
-- {Messages.ERRORS_RELOAD}
--
-- >;
-- return this._renderFormNotice(Messages.POWERCORD_UPDATES_AWAITING_RELOAD_TITLE, body);
-- }
--
-- renderUnsupported () {
-- const body =
-- {Messages.POWERCORD_UPDATES_UNSUPPORTED_DESC.format({ releaseChannel: window.GLOBAL_ENV.RELEASE_CHANNEL })}
--
;
-- return this._renderFormNotice(Messages.POWERCORD_UPDATES_UNSUPPORTED_TITLE, body);
-- }
--
-- _renderFormNotice (title, body) {
-- return ;
-- }
--
-- // --- PROMPTS
-- askSkipUpdate (callback) {
-- this._ask(
-- Messages.POWERCORD_UPDATES_SKIP_MODAL_TITLE,
-- Messages.POWERCORD_UPDATES_SKIP_MODAL,
-- Messages.POWERCORD_UPDATES_SKIP,
-- callback
-- );
-- }
--
-- askPauseUpdates () {
-- this._ask(
-- Messages.POWERCORD_UPDATES_PAUSE,
-- Messages.POWERCORD_UPDATES_PAUSE_MODAL,
-- Messages.POWERCORD_UPDATES_PAUSE,
-- () => this.props.updateSetting('paused', true)
-- );
-- }
--
-- askDisableUpdates (all, callback) {
-- this._ask(
-- Messages.POWERCORD_UPDATES_DISABLE,
-- all ? Messages.POWERCORD_UPDATES_DISABLE_MODAL_ALL : Messages.POWERCORD_UPDATES_DISABLE_MODAL,
-- Messages.POWERCORD_UPDATES_DISABLE,
-- callback
-- );
-- }
--
-- askChangeChannel (callback) {
-- this._ask(
-- Messages.POWERCORD_UPDATES_OPTS_RELEASE_MODAL_HEADER,
-- Messages.POWERCORD_UPDATES_OPTS_RELEASE_MODAL,
-- Messages.POWERCORD_UPDATES_OPTS_RELEASE_SWITCH,
-- callback
-- );
-- }
--
-- _ask (title, content, confirm, callback, red = true) {
-- openModal(() =>
-- {content}
-- );
-- }
--
-- // --- DEBUG STUFF (Intentionally left english-only)
-- renderDebugInfo () {
-- const { getRegisteredExperiments, getExperimentOverrides } = getModule([ 'initialize', 'getExperimentOverrides' ], false);
-- const { apiManager: { apis }, api: { commands: { commands }, settings: { store: settingsStore } } } = powercord;
-- const superProperties = getModule([ 'getSuperPropertiesBase64' ], false).getSuperProperties();
-- const unauthorizedPlugins = Array.from(powercord.pluginManager.plugins.values()).filter(plugin =>
-- plugin.__shortCircuit).map(plugin => plugin.manifest.name);
-- const plugins = powercord.pluginManager.getPlugins().filter(plugin =>
-- !powercord.pluginManager.get(plugin).isInternal && powercord.pluginManager.isEnabled(plugin)
-- );
--
-- const enabledLabs = powercord.api.labs.experiments.filter(e => powercord.api.labs.isExperimentEnabled(e.id));
-- const experimentOverrides = Object.keys(getExperimentOverrides()).length;
-- const availableExperiments = Object.keys(getRegisteredExperiments()).length;
--
-- const discordPath = process.resourcesPath.slice(0, -10);
-- const maskPath = (path) => {
-- path = path.replace(/(?:\/home\/|C:\\Users\\|\/Users\/)([ \w.-]+).*/i, (path, username) => {
-- const usernameIndex = path.indexOf(username);
-- return [ path.slice(0, usernameIndex), username.charAt(0) + username.slice(1).replace(/[a-zA-Z]/g, '*'),
-- path.slice(usernameIndex + username.length) ].join('');
-- });
--
-- return path;
-- };
--
-- const cachedFiles = (existsSync(CACHE_FOLDER) && readdirSync(CACHE_FOLDER)
-- .filter(d => lstatSync(`${CACHE_FOLDER}/${d}`).isDirectory())
-- .map(d => readdirSync(`${CACHE_FOLDER}/${d}`))
-- .flat().length) || 'n/a';
--
-- const createPathReveal = (title, path) =>
-- ;
--
-- return
--
-- System / Discord
--
--
Locale:
{currentLocale}
--
OS:
{window.platform.os.family}{window.platform.os.architecture === 64 ? ' 64-bit' : ''}
--
Architecture:
{superProperties.os_arch}
-- {process.platform === 'linux' && (
--
Distro:
{superProperties.distro || 'n/a'}
-- )}
--
Release Channel:
{superProperties.release_channel}
--
App Version:
{superProperties.client_version}
--
Build Number:
{superProperties.client_build_number}
--
Build ID:
{window.GLOBAL_ENV.SENTRY_TAGS.buildId.slice(0, 7)}
--
Experiments:
{experimentOverrides} / {availableExperiments}
--
--
-- Process Versions
--
--
React:
{React.version}
-- {[ 'electron', 'chrome', 'node' ].map(proc =>
--
{proc.charAt(0).toUpperCase() + proc.slice(1)}:
{process.versions[proc]}
-- )}
--
--
-- Powercord
--
--
Commands:
{Object.keys(commands).length}
--
Settings:
{Object.keys(settingsStore.getAllSettings()).length}
--
Plugins:
{powercord.pluginManager.getPlugins()
-- .filter(plugin => powercord.pluginManager.isEnabled(plugin)).length} / {powercord.pluginManager.plugins.size}
--
--
Themes:
{powercord.styleManager.getThemes()
-- .filter(theme => powercord.styleManager.isEnabled(theme)).length} / {powercord.styleManager.themes.size}
--
--
Labs:
{enabledLabs.length} / {powercord.api.labs.experiments.length}
--
--
{`Settings Sync:\n${powercord.settings.get('settingsSync', false)}`}
--
Cached Files:
{cachedFiles}
--
{`Account:\n${!!powercord.account}`}
--
APIs:
{apis.length}
--
--
-- Git
--
--
Upstream:
{powercord.gitInfos.upstream.replace(REPO_URL, 'Official')}
--
--
Branch:
{powercord.gitInfos.branch}
--
{`Latest:\n${!this.props.getSetting('updates', []).find(update => update.id === 'powercord')}`}
--
--
-- Listings
--
-- {createPathReveal('Powercord Path', powercord.basePath)}
-- {createPathReveal('Discord Path', discordPath)}
--
Experiments:
{experimentOverrides > 0 ? Object.keys(getExperimentOverrides()).join(', ') : 'n/a'}
--
Labs:
-- {enabledLabs.length ? enabledLabs.map(e => e.name).join(', ') : 'n/a'}
--
--
-- {unauthorizedPlugins.length > 0 &&
-- Unauthorized Plugins:
-- {unauthorizedPlugins.join(', ')}
--
}
-- {window.bdplugins &&
-- BetterDiscord Plugins:
-- {Object.keys(window.bdplugins).join(', ')}
--
}
--
--
-- this.handleDebugInfoCopy(plugins)}
-- >
-- {this.state.copied ? 'Copied!' : 'Copy'}
--
-- }
-- />;
-- }
--
-- handleDebugInfoCopy (plugins) {
-- const extract = document.querySelector('.debug-info > code')
-- .innerText.replace(/([A-Z/ ]+) (?=\s(?!C:\\).*?:)/g, '\n[$1]').replace(/(.*?):\s(.*.+)/g, '$1="$2"').replace(/[ -](\w*(?=.*=))/g, '$1');
--
-- this.setState({ copied: true });
-- clipboard.writeText(
-- `\`\`\`ini
-- # Debugging Information | Result created: ${new Date().toUTCString()}
-- ${extract.substring(0, extract.indexOf('\nPlugins', extract.indexOf('\nPlugins') + 1))}
-- Plugins="${plugins.join(', ')}"${window.bdplugins ? `\nBDPlugins="${Object.keys(window.bdplugins).join(', ')}"` : ''}
-- \`\`\``.replace(/ {6}|n\/a/g, '').replace(/(?![0-9]{1,3}) \/ (?=[0-9]{1,3})/g, '/')
-- );
-- setTimeout(() => this.setState({ copied: false }), 2500);
-- }
--};
-diff --git a/src/Powercord/plugins/pc-updater/components/Update.jsx b/src/Powercord/plugins/pc-updater/components/Update.jsx
-deleted file mode 100644
-index d2d9fb7..0000000
---- a/src/Powercord/plugins/pc-updater/components/Update.jsx
-+++ /dev/null
-@@ -1,45 +0,0 @@
--const { React, i18n: { Messages } } = require('powercord/webpack');
--const { Button } = require('powercord/components');
--
--const Icons = require('./Icons');
--
--module.exports = class Update extends React.PureComponent {
-- constructor () {
-- super();
-- this.plugin = powercord.pluginManager.get('pc-updater');
-- }
--
-- render () {
-- const { name, icon, repo, commits, updating, onSkip, onDisable } = this.props;
-- return
--
--
-- {React.createElement(Icons[icon])}
--
--
{name}
--
-- {updating
-- ?
-- {Messages.POWERCORD_UPDATES_UPDATING_ITEM}
--
-- : <>
--
-- {Messages.POWERCORD_UPDATES_SKIP}
--
--
-- {Messages.POWERCORD_UPDATES_DISABLE}
--
-- >}
--
--
--
-- {commits.map(commit =>
)}
--
--
;
-- }
--};
-diff --git a/src/Powercord/plugins/pc-updater/index.js b/src/Powercord/plugins/pc-updater/index.js
-deleted file mode 100644
-index 2a531d8..0000000
---- a/src/Powercord/plugins/pc-updater/index.js
-+++ /dev/null
-@@ -1,371 +0,0 @@
--const { React, getModule, getModuleByDisplayName, i18n: { Messages } } = require('powercord/webpack');
--const { open: openModal, close: closeModal } = require('powercord/modal');
--const { Confirm } = require('powercord/components/modal');
--const { Plugin } = require('powercord/entities');
--
--const { join } = require('path');
--const { promisify } = require('util');
--const cp = require('child_process');
--const exec = promisify(cp.exec);
--
--const Settings = require('./components/Settings.jsx');
--
--const changelog = require('../../../../changelogs.json');
--
--module.exports = class Updater extends Plugin {
-- constructor () {
-- super();
--
-- this.checking = false;
-- this.cwd = { cwd: join(__dirname, ...Array(4).fill('..')) };
-- }
--
-- async startPlugin () {
-- this.settings.set('paused', false);
-- this.settings.set('failed', false);
-- this.settings.set('checking', false);
-- this.settings.set('updating', false);
-- this.settings.set('awaiting_reload', false);
-- this.settings.set('checking_progress', null);
--
-- this.loadStylesheet('style.scss');
-- powercord.api.settings.registerSettings('pc-updater', {
-- category: this.entityID,
-- label: 'Updater', // Note to self: add this string to i18n last :^)
-- render: Settings
-- });
--
-- let minutes = Number(this.settings.get('interval', 15));
-- if (minutes < 1) {
-- this.settings.set('interval', 1);
-- minutes = 1;
-- }
--
-- this._interval = setInterval(this.checkForUpdates.bind(this), minutes * 60 * 1000);
-- setTimeout(() => {
-- this.checkForUpdates();
-- }, 10e3);
--
-- const lastChangelog = this.settings.get('last_changelog', '');
-- if (changelog.id !== lastChangelog) {
-- this.openChangeLogs();
-- }
-- }
--
-- pluginWillUnload () {
-- powercord.api.settings.unregisterSettings('pc-updater');
-- clearInterval(this._interval);
-- }
--
-- async checkForUpdates (allConcurrent = false) {
-- if (
-- this.settings.get('disabled', false) ||
-- this.settings.get('paused', false) ||
-- this.settings.get('checking', false) ||
-- this.settings.get('updating', false)
-- ) {
-- return;
-- }
--
-- this.settings.set('checking', true);
-- this.settings.set('checking_progress', [ 0, 0 ]);
-- const disabled = this.settings.get('entities_disabled', []).map(e => e.id);
-- const skipped = this.settings.get('entities_skipped', []);
-- const plugins = [ ...powercord.pluginManager.plugins.values() ].filter(p => !p.isInternal);
-- const themes = [ ...powercord.styleManager.themes.values() ];
--
-- const entities = plugins.concat(themes).filter(e => !disabled.includes(e.updateIdentifier) && e.isUpdatable());
-- if (!disabled.includes(powercord.updateIdentifier)) {
-- entities.push(powercord);
-- }
--
-- let done = 0;
-- const updates = [];
-- const entitiesLength = entities.length;
-- const parallel = allConcurrent ? entitiesLength : this.settings.get('concurrency', 2);
-- await Promise.all(Array(parallel).fill(null).map(async () => {
-- let entity;
-- while ((entity = entities.shift())) {
-- try {
-- const repo = await entity.getGitRepo();
-- if (repo) {
-- const shouldUpdate = await entity._checkForUpdates();
-- if (shouldUpdate) {
-- const commits = await entity._getUpdateCommits();
-- if (commits[0] && skipped[entity.updateIdentifier] === commits[0].id) {
-- continue;
-- }
-- updates.push({
-- id: entity.updateIdentifier,
-- name: entity.manifest?.name ?? 'Powercord',
-- icon: entity.constructor.name === 'Theme' || entity.constructor.name === 'Powercord'
-- ? entity.constructor.name
-- : 'Plugin',
-- commits,
-- repo
-- });
-- }
-- }
-- } catch (e) {
-- console.error('An error occurred while checking for updates for %s', entity.manifest?.name ?? 'Powercord', e);
-- } finally {
-- this.settings.set('checking_progress', [ ++done, entitiesLength ]);
-- }
-- }
-- }));
--
-- this.settings.set('updates', updates);
-- this.settings.set('last_check', Date.now());
-- this.settings.set('checking', false);
-- if (updates.length > 0) {
-- if (this.settings.get('automatic', false)) {
-- this.doUpdate();
-- } else if (!document.querySelector('#powercord-updater, .powercord-updater')) {
-- powercord.api.notices.sendToast('powercord-updater', {
-- header: Messages.POWERCORD_UPDATES_TOAST_AVAILABLE_HEADER,
-- content: Messages.POWERCORD_UPDATES_TOAST_AVAILABLE_DESC,
-- icon: 'wrench',
-- buttons: [ {
-- text: Messages.POWERCORD_UPDATES_UPDATE,
-- color: 'green',
-- look: 'outlined',
-- onClick: () => this.doUpdate()
-- }, {
-- text: Messages.POWERCORD_UPDATES_OPEN_UPDATER,
-- color: 'blue',
-- look: 'ghost',
-- onClick: async () => {
-- const settingsModule = await getModule([ 'open', 'saveAccountChanges' ]);
-- settingsModule.open('pc-updater');
-- }
-- } ]
-- });
-- }
-- }
-- }
--
-- async doUpdate (force = false) {
-- this.settings.set('failed', false);
-- this.settings.set('updating', true);
-- const updates = this.settings.get('updates', []);
-- const failed = [];
-- for (const update of [ ...updates ]) {
-- let entity = powercord;
-- if (update.id.startsWith('plugin')) {
-- entity = powercord.pluginManager.get(update.id.replace('plugins_', ''));
-- } else if (update.id.startsWith('theme')) {
-- entity = powercord.styleManager.get(update.id.replace('themes_', ''));
-- }
--
-- const success = await entity._update(force);
-- updates.shift();
-- this.settings.get('updates', updates);
-- if (!success) {
-- failed.push(update);
-- }
-- }
--
-- this.settings.set('updating', false);
-- if (failed.length > 0) {
-- this.settings.set('failed', true);
-- this.settings.set('updates', failed);
-- if (!document.querySelector('#powercord-updater, .powercord-updater')) {
-- powercord.api.notices.sendToast('powercord-updater', {
-- header: Messages.POWERCORD_UPDATES_TOAST_FAILED,
-- type: 'danger',
-- buttons: [ {
-- text: Messages.POWERCORD_UPDATES_FORCE,
-- color: 'red',
-- look: 'outlined',
-- onClick: () => this.askForce()
-- }, {
-- text: Messages.FRIEND_REQUEST_IGNORE,
-- look: 'outlined',
-- color: 'grey'
-- }, {
-- text: Messages.POWERCORD_UPDATES_OPEN_UPDATER,
-- color: 'blue',
-- look: 'ghost',
-- onClick: async () => {
-- const settingsModule = await getModule([ 'open', 'saveAccountChanges' ]);
-- settingsModule.open('pc-updater');
-- }
-- } ]
-- });
-- }
-- }
-- }
--
-- // MODALS
-- askForce (callback) {
-- openModal(() =>
-- React.createElement(Confirm, {
-- red: true,
-- header: Messages.SUPPRESS_EMBED_TITLE,
-- confirmText: Messages.POWERCORD_UPDATES_FORCE,
-- cancelText: Messages.CANCEL,
-- onConfirm: () => {
-- if (callback) {
-- // eslint-disable-next-line callback-return
-- callback();
-- }
-- this.doUpdate(true);
-- },
-- onCancel: closeModal
-- }, React.createElement('div', { className: 'powercord-text' }, Messages.POWERCORD_UPDATES_FORCE_MODAL))
-- );
-- }
--
-- // UTILS
-- skipUpdate (id, commit) {
-- this.settings.set('entities_skipped', {
-- ...this.settings.get('entities_skipped', {}),
-- [id]: commit
-- });
-- this._removeUpdate(id);
-- }
--
-- disableUpdates (entity) {
-- this.settings.set('entities_disabled', [
-- ...this.settings.get('entities_disabled', []),
-- {
-- id: entity.id,
-- name: entity.name,
-- icon: entity.icon
-- }
-- ]);
-- this._removeUpdate(entity.id);
-- }
--
-- enableUpdates (id) {
-- this.settings.set('entities_disabled', this.settings.get('entities_disabled', []).filter(d => d.id !== id));
-- }
--
-- _removeUpdate (id) {
-- this.settings.set('updates', this.settings.get('updates', []).filter(u => u.id !== id));
-- }
--
-- async getGitInfos () {
-- const branch = await exec('git branch', this.cwd)
-- .then(({ stdout }) =>
-- stdout
-- .toString()
-- .split('\n')
-- .find(l => l.startsWith('*'))
-- .slice(2)
-- .trim()
-- );
--
-- const revision = await exec(`git rev-parse ${branch}`, this.cwd)
-- .then(r => r.stdout.toString().trim());
--
-- const upstream = await exec('git remote get-url origin', this.cwd)
-- .then(r => r.stdout.toString().match(/github\.com[:/]([\w-_]+\/[\w-_]+)/)[1]);
--
-- return {
-- upstream,
-- branch,
-- revision
-- };
-- }
--
-- async changeBranch (branch) {
-- await exec('git fetch origin +v2:v2', this.cwd);
-- await exec(`git checkout ${branch}`, this.cwd);
-- // location.reload();
-- }
--
-- // Change Log
-- async openChangeLogs () {
-- const ChangeLog = await this._getChangeLogsComponent();
-- openModal(() => React.createElement(ChangeLog, {
-- changeLog: this.formatChangeLog(changelog)
-- }));
-- }
--
-- async _getChangeLogsComponent () {
-- if (!this._ChangeLog) {
-- const _this = this;
-- const { video } = await getModule([ 'video', 'added' ]);
-- const DiscordChangeLog = await getModuleByDisplayName('ChangelogStandardTemplate');
--
-- class ChangeLog extends DiscordChangeLog {
-- constructor (props) {
-- super(props);
--
-- this.oldRenderHeader = this.renderHeader;
-- this.renderHeader = this.renderNewHeader.bind(this);
--
-- this.track = () => void 0;
-- this.handleScroll = () => void 0;
-- }
--
-- renderNewHeader () {
-- const header = this.oldRenderHeader();
-- header.props.children[0].props.children = `Powercord - ${header.props.children[0].props.children}`;
-- return header;
-- }
--
-- renderVideo () {
-- if (!changelog.image) {
-- return null;
-- }
--
-- return React.createElement('img', {
-- src: changelog.image,
-- className: video,
-- alt: ''
-- });
-- }
--
-- renderFooter () {
-- const footer = super.renderFooter();
-- footer.props.children = React.createElement('span', {
-- style: { color: 'var(--text-normal)' },
-- dangerouslySetInnerHTML: {
-- __html: changelog.footer
-- }
-- });
-- return footer;
-- }
--
-- componentWillUnmount () {
-- _this.settings.set('last_changelog', changelog.id);
-- }
-- }
--
-- this._ChangeLog = ChangeLog;
-- }
-- return this._ChangeLog;
-- }
--
-- formatChangeLog (json) {
-- let body = '';
-- const colorToClass = {
-- GREEN: 'added',
-- ORANGE: 'progress',
-- RED: 'fixed',
-- BLURPLE: 'improved'
-- };
-- json.contents.forEach(item => {
-- if (item.type === 'HEADER') {
-- body += `${item.text.toUpperCase()} {${colorToClass[item.color]}${item.noMargin ? ' marginTop' : ''}}\n======================\n\n`;
-- } else {
-- if (item.text) {
-- body += item.text;
-- body += '\n\n';
-- }
-- if (item.list) {
-- body += ` * ${item.list.join('\n\n * ')}`;
-- body += '\n\n';
-- }
-- }
-- });
-- return {
-- date: json.date,
-- locale: 'en-us',
-- revision: 1,
-- body
-- };
-- }
--};
-diff --git a/src/Powercord/plugins/pc-updater/manifest.json b/src/Powercord/plugins/pc-updater/manifest.json
-deleted file mode 100644
-index 07e89ba..0000000
---- a/src/Powercord/plugins/pc-updater/manifest.json
-+++ /dev/null
-@@ -1,7 +0,0 @@
--{
-- "name": "Updater",
-- "version": "2.0.0",
-- "description": "Ensure Powercord, plugins and themes are always up to date",
-- "author": "Powercord Team",
-- "license": "MIT"
--}
-diff --git a/src/Powercord/plugins/pc-updater/style.scss b/src/Powercord/plugins/pc-updater/style.scss
-deleted file mode 100644
-index 55e7576..0000000
---- a/src/Powercord/plugins/pc-updater/style.scss
-+++ /dev/null
-@@ -1,211 +0,0 @@
--.powercord-updater {
-- .top-section {
-- margin-top: 35px;
-- display: flex;
--
-- .icon {
-- width: 64px;
-- margin-right: 15px;
-- flex-shrink: 0;
-- }
--
-- .animated path + path {
-- transform-origin: 50% 50%;
-- animation: rotate 1.2s infinite;
-- }
--
-- @keyframes rotate {
-- from {
-- transform: rotate(0deg);
-- }
-- to {
-- transform: rotate(360deg);
-- }
-- }
--
-- .status {
-- display: flex;
-- flex-direction: column;
-- justify-content: space-evenly;
--
-- h3 {
-- font-size: 28px;
-- }
--
-- div {
-- opacity: .7;
-- }
-- }
--
-- .about {
-- display: flex;
-- margin-left: auto;
-- flex-direction: column;
-- justify-content: space-evenly;
-- font-family: SourceCodePro, Consolas, Liberation Mono, Menlo, Courier, monospace;
-- font-size: 14px;
-- opacity: .7;
--
-- div {
-- display: flex;
-- justify-content: space-between;
--
-- span {
-- margin-left: 10px;
-- width: 80px;
-- }
-- }
-- }
-- }
--
-- .buttons {
-- display: flex;
-- margin-top: 25px;
--
-- button + button {
-- margin-left: 15px;
-- }
-- }
--
-- .updates {
-- margin-top: 25px;
-- }
--
-- .update {
-- margin: 15px 0;
--
-- .title {
-- display: flex;
-- align-items: center;
--
-- .icon {
-- width: 28px;
-- height: 28px;
-- margin-right: 10px;
-- }
--
-- .name {
-- font-size: 22px;
-- }
--
-- .actions {
-- display: flex;
-- align-items: center;
-- margin-left: auto;
--
-- button {
-- height: 26px;
-- min-height: 26px;
-- padding: 2px 6px;
--
-- &:not(:last-child) {
-- margin-right: 10px;
-- }
-- }
-- }
-- }
--
-- .summary {
-- padding: 10px 55px;
--
-- div {
-- margin-bottom: 10px;
-- }
--
-- a {
-- background-color: var(--background-secondary);
-- margin-right: 10px;
-- }
-- }
-- }
--
-- .buttons, .update {
-- padding-bottom: 15px;
-- margin-bottom: 20px;
-- border-bottom: 1px var(--background-modifier-accent) solid;
-- }
--
-- &-ft {
-- margin-top: 40px;
-- margin-bottom: 8px;
-- }
--
-- .debug-info {
-- display: flex;
-- color: var(--interactive-normal);
-- user-select: text;
-- cursor: text;
--
-- &.copied b {
-- color: #3ca374;
-- }
--
-- code {
-- white-space: pre-wrap;
-- font-family: inherit;
-- font-size: 12px;
-- }
--
-- b {
-- align-items: center;
-- color: #7289da;
-- text-transform: uppercase;
-- display: flex;
--
-- &::after {
-- content: "";
-- margin-left: 4px;
-- border: thin dashed;
-- opacity: .6;
-- flex: 1;
-- }
--
-- transition: color .2s ease;
-- }
--
-- .row {
-- display: flex;
-- flex-direction: row;
-- flex-wrap: wrap;
-- margin: 8px 0 8px 20px;
-- }
--
-- .column {
-- flex-basis: 25%;
--
-- &:nth-child(n+5) {
-- margin-top: 8px;
-- }
-- }
--
-- .full-column {
-- flex-basis: 100%;
--
-- &:nth-child(n+2) {
-- margin-top: 8px;
-- }
--
-- &> a {
-- user-select: none;
-- }
-- }
--
-- &:hover {
-- button {
-- opacity: 1;
-- }
-- }
--
-- :last-child:not(button) > :last-child {
-- flex-basis: 85%;
-- }
--
-- button {
-- opacity: 0;
-- align-self: flex-end;
-- transition: opacity .2s ease;
-- position: absolute;
-- right: 20px;
-- }
-- }
--}
diff --git a/users/infinidoge/config/default.nix b/users/infinidoge/config/default.nix
index 136218f..023dee7 100644
--- a/users/infinidoge/config/default.nix
+++ b/users/infinidoge/config/default.nix
@@ -72,14 +72,4 @@ with lib;
"blugon".source = ./blugon;
};
-
- home.bindmounts."${main.dotfiles.dir}/users/infinidoge/config" = mkIf main.info.graphical {
- allowOther = true;
- directories = [
- {
- source = "powercord";
- target = ".config/powercord";
- }
- ];
- };
}
diff --git a/users/infinidoge/config/powercord/Badges-Everywhere.json b/users/infinidoge/config/powercord/Badges-Everywhere.json
deleted file mode 100644
index d7f3ebc..0000000
--- a/users/infinidoge/config/powercord/Badges-Everywhere.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "displayHypeSquadOnline": false,
- "displayHypeSquad": false,
- "displayNitro": false,
- "displayBoosting": false,
- "displayEarly": false,
- "displayHunter": false,
- "messages": false,
- "threads-preview": false
-}
\ No newline at end of file
diff --git a/users/infinidoge/config/powercord/Better-Folders.json b/users/infinidoge/config/powercord/Better-Folders.json
deleted file mode 100644
index e7b9167..0000000
--- a/users/infinidoge/config/powercord/Better-Folders.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "closeAllFolders": false,
- "closeOthers": true,
- "forceOpen": true,
- "closeAllHomeButton": false,
- "folderSidebar": true,
- "sidebarAnim": true
-}
\ No newline at end of file
diff --git a/users/infinidoge/config/powercord/Better-Replies.json b/users/infinidoge/config/powercord/Better-Replies.json
deleted file mode 100644
index e76cc04..0000000
--- a/users/infinidoge/config/powercord/Better-Replies.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "--mention-cache": true,
- "mention": "never",
- "ping": "always"
-}
\ No newline at end of file
diff --git a/users/infinidoge/config/powercord/Better-Settings.json b/users/infinidoge/config/powercord/Better-Settings.json
deleted file mode 100644
index 2ea9971..0000000
--- a/users/infinidoge/config/powercord/Better-Settings.json
+++ /dev/null
@@ -1,314 +0,0 @@
-{
- "itemidlist": {
- "MyAccount": [
- "",
- 100,
- "My Account"
- ],
- "ProfileCustomization": [
- "",
- 100,
- "User Profile"
- ],
- "PrivacynSafety": [
- "",
- 100,
- "Privacy & Safety"
- ],
- "AuthorizedApps": [
- "",
- 100,
- "Authorized Apps"
- ],
- "Connections": [
- "",
- 100,
- "Connections"
- ],
- "DiscordNitro": [
- "",
- 100,
- "Discord Nitro"
- ],
- "NitroServerBoost": [
- "",
- 100,
- "Server Boost"
- ],
- "Subscriptions": [
- "",
- 100,
- "Subscriptions"
- ],
- "LibraryInventory": [
- "",
- 100,
- "Gift Inventory1"
- ],
- "Billing": [
- "",
- 100,
- "Billing"
- ],
- "Appearance": [
- "",
- 100,
- "Appearance"
- ],
- "Accessibility": [
- "",
- 100,
- "Accessibility"
- ],
- "VoicenVideo": [
- "",
- 100,
- "Voice & Video"
- ],
- "TextnImages": [
- "",
- 100,
- "Text & Images"
- ],
- "Notifications": [
- "",
- 100,
- "Notifications"
- ],
- "Keybinds": [
- "",
- 100,
- "Keybinds"
- ],
- "Language": [
- "",
- 100,
- "Language"
- ],
- "Linux": [
- "",
- 100,
- "Linux Settings"
- ],
- "StreamerMode": [
- "",
- 100,
- "Streamer Mode"
- ],
- "Advanced": [
- "",
- 100,
- "Advanced"
- ],
- "GameActivity": [
- "",
- 100,
- "Activity Status"
- ],
- "pc-general": [
- "",
- 100,
- "General Settings"
- ],
- "pc-moduleManager-plugins": [
- "",
- 100,
- "Plugins"
- ],
- "pc-moduleManager-themes": [
- "",
- 100,
- "Themes"
- ],
- "morebadges": [
- "",
- 100,
- "Badges Everywhere"
- ],
- "Better-Folders": [
- "",
- 100,
- "Better Folders"
- ],
- "Better-Replies": [
- "",
- 100,
- "Better Replies"
- ],
- "Better-Settings": [
- "",
- 100,
- "Better Settings"
- ],
- "Better-Status-Indicators": [
- "",
- 100,
- "Better Status Indicators"
- ],
- "Custom-Timestamps": [
- "",
- 100,
- "Custom Timestamps"
- ],
- "custom-volume-range-settings": [
- "",
- 100,
- "Custom Volume Range"
- ],
- "dm-typing-indicator": [
- "",
- 100,
- "DM Typing Indicator"
- ],
- "ian-settings": [
- "",
- 100,
- "In App Notifications"
- ],
- "Message-Tooltips": [
- "",
- 100,
- "Message Tooltips"
- ],
- "PowerAliases": [
- "",
- 100,
- "PowerAliases"
- ],
- "Powercord-Reverse-Image-Search": [
- "",
- 100,
- "Reverse Image Search"
- ],
- "pronoundb": [
- "",
- 100,
- "PronounDB"
- ],
- "reddit-mentions": [
- "",
- 100,
- "Reddit Mentions"
- ],
- "relationships-notifier": [
- "",
- 100,
- "Relationships Notifier"
- ],
- "rceverywhere": [
- "",
- 100,
- "Role Color Everywhere"
- ],
- "Send-Timestamps": [
- "",
- 100,
- "Send Timestamps"
- ],
- "smart-typers": [
- "",
- 100,
- "Smart Typers"
- ],
- "Staff-Tags": [
- "",
- 100,
- "Staff Tags"
- ],
- "Total-Members": [
- "",
- 100,
- "Total Members"
- ],
- "User-Birthdays": [
- "",
- 100,
- "User Birthdays"
- ],
- "User-Details": [
- "",
- 100,
- "User Details"
- ],
- "VoiceChatUtilities": [
- "",
- 100,
- "Voicechat Utilities"
- ],
- "pc-clickableEdits": [
- "",
- 100,
- "Clickable Edits"
- ],
- "pc-hastebin": [
- "",
- 100,
- "Hastebin"
- ],
- "ppl-moe": [
- "",
- 100,
- "ppl.moe"
- ],
- "Better-Threads": [
- "",
- 100,
- "Better Threads"
- ],
- "Report-Messages": [
- "",
- 100,
- "Report Messages"
- ],
- "cutecord": [
- "",
- 100,
- "Cutecord"
- ],
- "pc-emojiUtility": [
- "",
- 100,
- "Emote Utility"
- ],
- "changelog": [
- "",
- 100,
- "Change Log"
- ],
- "HypesquadOnline": [
- "",
- 100,
- "HypeSquad"
- ],
- "logout": [
- "",
- 100,
- "Log Out"
- ],
- "Experiments": [
- "",
- 100,
- "Experiments"
- ],
- "DeveloperOptions": [
- "",
- 100,
- "Developer Options"
- ],
- "HotspotOptions": [
- "",
- 100,
- "Hotspot Options"
- ],
- "pc-updater": [
- "",
- 100,
- "Updater"
- ]
- },
- "changelog": true,
- "pluginsCategory": true,
- "contexttargetname": "Custom Timestamps",
- "contexttarget": "Custom-Timestamps",
- "baddies": ""
-}
\ No newline at end of file
diff --git a/users/infinidoge/config/powercord/Custom-Timestamps.json b/users/infinidoge/config/powercord/Custom-Timestamps.json
deleted file mode 100644
index c1b5b09..0000000
--- a/users/infinidoge/config/powercord/Custom-Timestamps.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "timestampSchematic": "%Y-%0M-%0D %0H:%0m:%0s, %g ago",
- "timestampBubbleSchematic": "%W, %N %D, %Y %H:%0m",
- "enableChatTimestamp": true
-}
\ No newline at end of file
diff --git a/users/infinidoge/config/powercord/Cutecord.json b/users/infinidoge/config/powercord/Cutecord.json
deleted file mode 100644
index 569aa71..0000000
--- a/users/infinidoge/config/powercord/Cutecord.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "version": "3.4.0",
- "customFocusDetection": false
-}
\ No newline at end of file
diff --git a/users/infinidoge/config/powercord/In-App-Notifications.json b/users/infinidoge/config/powercord/In-App-Notifications.json
deleted file mode 100644
index 3fa7426..0000000
--- a/users/infinidoge/config/powercord/In-App-Notifications.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "blockDesktop": true
-}
\ No newline at end of file
diff --git a/users/infinidoge/config/powercord/Multitask.json b/users/infinidoge/config/powercord/Multitask.json
deleted file mode 100644
index 4f9aefc..0000000
--- a/users/infinidoge/config/powercord/Multitask.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "accounts": [
- {
- "name": "Infinidoge#1337",
- "token": "mfa.cWI4hO2bh5t6xrBLHw88syT76kPDd-cXq57XG4nlbIDhmsXd3ue6JPi8AejmT-pO8HhnlzcaPJBnSZQTbGFN"
- }
- ]
-}
\ No newline at end of file
diff --git a/users/infinidoge/config/powercord/PinDMs.json b/users/infinidoge/config/powercord/PinDMs.json
deleted file mode 100644
index b0991ab..0000000
--- a/users/infinidoge/config/powercord/PinDMs.json
+++ /dev/null
@@ -1,111 +0,0 @@
-{
- "notifsounds": {},
- "friendList": {
- "sortoptions": true,
- "mutualguilds": true,
- "showtotal": true
- },
- "general": {
- "pinIcon": true,
- "unreadAmount": true,
- "channelAmount": true
- },
- "recentOrder": {
- "channelList": false,
- "guildList": false
- },
- "pindms": {
- "dmCategories": {
- "29180447426649604": {
- "expanded": true,
- "dms": [
- "355468263217561613",
- "278993346138210305",
- "191369144422105089"
- ],
- "id": 29180447426649604,
- "name": "Family",
- "pos": 0
- },
- "89099006448868140": {
- "expanded": true,
- "dms": [
- "478663934279155714",
- "348663317486632960",
- "283423992856051732",
- "212382908663595009",
- "537011807056035840",
- "337004876347473922",
- "219216785252155392",
- "183915359173214208",
- "98221020120354816",
- "372115591248740353",
- "256161387766743041",
- "342128724348633131",
- "285509313412464642",
- "111288483330478080",
- "360452650426433541",
- "340921293568475136",
- "448976224933511178",
- "538102572716654623"
- ],
- "id": 89099006448868140,
- "name": "Friends",
- "pos": 1
- },
- "49682831504275730": {
- "expanded": false,
- "dms": [
- "325387620266016768",
- "261302296103747584",
- "207919551130763264",
- "235148962103951360",
- "459974928293167107",
- "569019503057436684",
- "799944549270814731",
- "204255221017214977",
- "155149108183695360",
- "575252669443211264",
- "530082442967646230",
- "473868086773153793",
- "625168398967373866",
- "219251784445591553",
- "448284325255839744",
- "409107086526644234",
- "706341689345703967",
- "550613223733329920",
- "471705718957801483"
- ],
- "id": 49682831504275730,
- "name": "Bots",
- "pos": 2
- },
- "79570398434530800": {
- "expanded": false,
- "dms": [
- "875524286411079740",
- "764296108855394314",
- "784444467427278868"
- ],
- "id": 79570398434530800,
- "name": "Groups",
- "pos": 3
- },
- "61742966198444390": {
- "expanded": false,
- "dms": [
- "742172821135818842",
- "815953173800943666",
- "234338160203661313",
- "493538118474006551",
- "233702693414109208",
- "523370672869605401"
- ],
- "id": 61742966198444390,
- "name": "Alts",
- "pos": 4
- }
- },
- "serverlist": []
- }
-}
\ No newline at end of file
diff --git a/users/infinidoge/config/powercord/Powercord-Reverse-Image-Search.json b/users/infinidoge/config/powercord/Powercord-Reverse-Image-Search.json
deleted file mode 100644
index 557ac1a..0000000
--- a/users/infinidoge/config/powercord/Powercord-Reverse-Image-Search.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "RIS-provider-google-images": false,
- "RIS-provider-yandex": true,
- "RIS-provider-tineye": false,
- "RIS-provider-saucenao": true,
- "RIS-provider-imgops": true,
- "RIS-enlargeImages": true,
- "RIS-convertPNG": true
-}
\ No newline at end of file
diff --git a/users/infinidoge/config/powercord/PronounDB.json b/users/infinidoge/config/powercord/PronounDB.json
deleted file mode 100644
index 94c34c6..0000000
--- a/users/infinidoge/config/powercord/PronounDB.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
- "pronouns-154058479798059009": "st",
- "pronouns-479702785982464001": "st",
- "pronouns-274727608954912770": "hh",
- "pronouns-213326169930465282": "st",
- "pronouns-241344230901940234": "sh",
- "pronouns-187421759484592128": "hh",
- "pronouns-348663317486632960": "hh",
- "pronouns-77084495118868480": "tt",
- "pronouns-421783398374440961": "tt"
-}
\ No newline at end of file
diff --git a/users/infinidoge/config/powercord/Relationships-Notifier.json b/users/infinidoge/config/powercord/Relationships-Notifier.json
deleted file mode 100644
index f91c594..0000000
--- a/users/infinidoge/config/powercord/Relationships-Notifier.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "textExpanded": true,
- "buttonText": "Okay"
-}
\ No newline at end of file
diff --git a/users/infinidoge/config/powercord/Replace-Timestamps---Powercord.json b/users/infinidoge/config/powercord/Replace-Timestamps---Powercord.json
deleted file mode 100644
index 8c22364..0000000
--- a/users/infinidoge/config/powercord/Replace-Timestamps---Powercord.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "t": true,
- "char": "t",
- "d": true,
- "T": true,
- "F": true,
- "f": true,
- "D": true
-}
\ No newline at end of file
diff --git a/users/infinidoge/config/powercord/Report-Messages.json b/users/infinidoge/config/powercord/Report-Messages.json
deleted file mode 100644
index 12fbb44..0000000
--- a/users/infinidoge/config/powercord/Report-Messages.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "who-safe": "friends"
-}
\ No newline at end of file
diff --git a/users/infinidoge/config/powercord/Role-Color-Everywhere.json b/users/infinidoge/config/powercord/Role-Color-Everywhere.json
deleted file mode 100644
index 587e6a4..0000000
--- a/users/infinidoge/config/powercord/Role-Color-Everywhere.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "status": false,
- "messages": false
-}
\ No newline at end of file
diff --git a/users/infinidoge/config/powercord/Smart-Typers.json b/users/infinidoge/config/powercord/Smart-Typers.json
deleted file mode 100644
index cc54b7d..0000000
--- a/users/infinidoge/config/powercord/Smart-Typers.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "userAvatars": false
-}
\ No newline at end of file
diff --git a/users/infinidoge/config/powercord/Staff-Tags.json b/users/infinidoge/config/powercord/Staff-Tags.json
deleted file mode 100644
index cdaaeb0..0000000
--- a/users/infinidoge/config/powercord/Staff-Tags.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "lastChangeLogVersion": "1.0.14"
-}
\ No newline at end of file
diff --git a/users/infinidoge/config/powercord/Statistics-Counter.json b/users/infinidoge/config/powercord/Statistics-Counter.json
deleted file mode 100644
index a54b86d..0000000
--- a/users/infinidoge/config/powercord/Statistics-Counter.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "pending": false,
- "blocked": false,
- "lastCounter": "GUILDS",
- "preserveLastCounter": true
-}
\ No newline at end of file
diff --git a/users/infinidoge/config/powercord/Total-Members.json b/users/infinidoge/config/powercord/Total-Members.json
deleted file mode 100644
index 2d695d7..0000000
--- a/users/infinidoge/config/powercord/Total-Members.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "displayMode": 0
-}
\ No newline at end of file
diff --git a/users/infinidoge/config/powercord/User-Details.json b/users/infinidoge/config/powercord/User-Details.json
deleted file mode 100644
index 9992d54..0000000
--- a/users/infinidoge/config/powercord/User-Details.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "custom": false
-}
\ No newline at end of file
diff --git a/users/infinidoge/config/powercord/Voice-chat-utilities.json b/users/infinidoge/config/powercord/Voice-chat-utilities.json
deleted file mode 100644
index c90bb1c..0000000
--- a/users/infinidoge/config/powercord/Voice-chat-utilities.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "voicechatcopyids": true
-}
\ No newline at end of file
diff --git a/users/infinidoge/config/powercord/better-status-indicators.json b/users/infinidoge/config/powercord/better-status-indicators.json
deleted file mode 100644
index 18ed756..0000000
--- a/users/infinidoge/config/powercord/better-status-indicators.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "enabledModules": [
- "status-everywhere"
- ],
- "se-mobileStatus": "self+others",
- "se-reducedStatuses": true,
- "statusDisplay": "default"
-}
\ No newline at end of file
diff --git a/users/infinidoge/config/powercord/css-toggler-cache/snippets.json b/users/infinidoge/config/powercord/css-toggler-cache/snippets.json
deleted file mode 100644
index eaf4337..0000000
--- a/users/infinidoge/config/powercord/css-toggler-cache/snippets.json
+++ /dev/null
@@ -1,93 +0,0 @@
-[
- {
- "id": "865809923878682634",
- "author": "717884197678874767",
- "content": ".emoji.jumboable {\n width: 10rem;\n height 10rem;\n min-height: 10rem;\n}",
- "timestamp": 1636734264000,
- "details": {
- "title": "Large Jumbo Emotes"
- }
- },
- {
- "id": "780838821662294068",
- "author": "265924886461939712",
- "channel": "755015869914152981",
- "content": ".anchor-3Z-8Bb[href=\"https://support.discord.com\"] { display: none; }",
- "timestamp": 1636867215000,
- "details": {
- "title": "Remove Help Button"
- }
- },
- {
- "id": "907333488779354112",
- "author": "457579346282938368",
- "content": ".members-2upGyL {\n height: 100%;\n}\n.toolbar-1t6TWx>.iconWrapper-2OrFZ1.selected-1GqIat:nth-of-type(4)~:last-child {\n margin-right: 56px;\n}\n.container-2PDP7D>.tabs-3L9Rgq {\n height: 0;\n padding: 0;\n border: none;\n}\n.container-2PDP7D>.tabs-3L9Rgq>.tab-XC_yrg {\n font-size: 0;\n position: absolute;\n right: 6px;\n top: -36px;\n width: 40px;\n height: 24px;\n margin: 0 8px;\n padding: 0;\n z-index: 2;\n border-radius: 12px;\n background-color: hsl(218, calc(var(--saturation-factor, 1) * 4.6%), 46.9%) !important;\n}\n.container-2PDP7D>.tabs-3L9Rgq>.tab-XC_yrg::after {\n position: absolute;\n top: 3px;\n width: 18px;\n height: 18px;\n background-color: white;\n border-radius: 50%;\n}\n.container-2PDP7D>.tabs-3L9Rgq>.tab-XC_yrg:first-of-type::after {\n content: url(\"data:image/svg+xml;utf8, \");\n right: 3px; \n}\n.container-2PDP7D>.tabs-3L9Rgq>.tab-XC_yrg:last-of-type::after {\n content: url(\"data:image/svg+xml;utf8, \");\n left: 3px;\n}\n.container-2PDP7D>.tabs-3L9Rgq>.tab-XC_yrg.active-2SVYP5 {\n pointer-events: none;\n opacity: 0;\n}",
- "timestamp": 1636761890000,
- "details": {
- "title": "Channel Banner Switch",
- "description": "Replaces the channel banner tabs with a single switch"
- }
- },
- {
- "id": "949001991567343616",
- "author": "250322741406859265",
- "content": ".form-3gdLxP {\n padding: 0px;\n}\n\n.inner-NQg18Y {\n padding-top: 4px;\n}\n\n.channelTextArea-1VQBuV {\n margin-bottom: 0px;\n}\n\n.base-3bcbY3 {\n top: -24px;\n left: 0px;\n width: fit-content;\n padding-right: 9px;\n border-radius: 0 8px 0 0;\n background-color: var(--channeltextarea-background);\n}\n\n.scrollableContainer-15eg7h {\n border-radius: 0px;\n min-height: 53px;\n}",
- "timestamp": 1646708812000,
- "details": {
- "title": "Expand Text Bar",
- "description": "Expands the text bar to be the width of the message screen, and aligns it with the user modal."
- }
- },
- {
- "id": "885158901673230376",
- "author": "169456051920437248",
- "content": "/* the main bit! */\n.container-3baos1 {\n position: fixed;\n left: 4px;\n top: calc(100% - 52px);\n width: 292px;\n background-color: var(--background-tertiary);\n}\n\n/* PATCH for scrollers above the user panel to make space */\n.guilds-1SWlCJ, /* servers */\n.sidebar-2K8pFh /* channels */ {\n height: calc(100% - 52px);\n}",
- "timestamp": 1636733943000,
- "details": {
- "title": "Extended User Panel"
- }
- },
- {
- "id": "898512654849687592",
- "author": "845535118285602866",
- "content": ".sidebarRegion-VFTUkN {\n flex: 0;\n}\n\n.contentColumnDefault-1VQkGM {\n margin: 0 auto;\n}",
- "timestamp": 1636733790000,
- "details": {
- "title": "Wide Settings"
- }
- },
- {
- "id": "875021875120582676",
- "author": "457579346282938368",
- "content": ".guildSection-1EoFKd > .flex-1xMQg5 > svg {\n flex-shrink: 0;\n}",
- "timestamp": 1636734029000,
- "details": {
- "title": "Stop Server Icon Shrinking"
- }
- },
- {
- "id": "865701620201685012",
- "author": "158296466119458816",
- "content": "[class*=\"chat-\"] > [class*=\"title-\"] > [class*=\"children-\"] > [class*=\"topic-\"] {\n white-space: normal;\n max-height: 2.4em;\n font-size: .9em;\n line-height: 1.2em;\n text-overflow: ellipsis;\n position: relative;\n}\n[class*=\"chat-\"] > [class*=\"title-\"] > [class*=\"children-\"]::after {\n content; unset;\n}\n[class*=\"chat-\"] > [class*=\"title-\"] > [class*=\"children-\"] > [class*=\"topic-\"]::after {\n content: \"\";\n position: absolute;\n bottom: 0;\n right: 0;\n height: 1em;\n background: linear-gradient(to right, transparent, var(--background-primary), var(--background-primary)) !important;\n display: flex;\n width: 130px;\n}",
- "timestamp": 1636734269000,
- "details": {
- "title": "2-Lined Channel Topic"
- }
- },
- {
- "id": "863870341537071197",
- "author": "574870314928832533",
- "content": ".roleColor-rz2vM0::after {\n content: '';\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n position: absolute;\n opacity: 0.125;\n background: currentColor;\n}\n.member-3-YXUe .badges {\n z-index: 0;\n}\n.member-3-YXUe.selected-aXhQR6 .roleColor-rz2vM0::after {\n border-radius: 4px;\n}\n.membersGroup-v9BXpm + .member-3-YXUe {\n margin-top: 5px;\n}\n.membersGroup-v9BXpm + .member-3-YXUe .roleColor-rz2vM0::after {\n border-radius: 5px 5px 0 0;\n}",
- "timestamp": 1636734299000,
- "details": {
- "title": "Colorful Member List",
- "description": "Makes the member list more colorful by adding a semi-transparent colored rectangle around users"
- }
- },
- {
- "id": "907442893608869888",
- "author": "288362986991648778",
- "content": ".icon-22AiRD [d=\"M6 1C3.243 1 1 3.244 1 6c0 2.758 2.243 5 5 5s5-2.242 5-5c0-2.756-2.243-5-5-5zm0 2.376a.625.625 0 110 1.25.625.625 0 010-1.25zM7.5 8.5h-3v-1h1V6H5V5h1a.5.5 0 01.5.5v2h1v1z\"] {\n d: path(\"M 7 4.003 C 7 5.1055 6.103 6.003 5 6.003 C 3.8975 6.003 3 5.1055 3 4.003 C 3 2.9005 3.897 2.003 5 2.003 C 6.103 2.003 7 2.9005 7 4.003 Z M 1 9.503 C 1 7.7365 2.645 6.503 5 6.503 C 7.3555 6.503 9 7.7365 9 9.503 V 10.003 H 1 V 9.503 Z M 10 10.003 H 11 V 9.503 C 11 8.2217 10.1349 7.2207 8.7607 6.7676 C 9.5311 7.4563 10 8.403 10 9.503 V 10.003 Z M 7.4417 5.9539 C 8.3329 5.7522 9 4.9539 9 4 C 9 2.9846 8.2347 2.1411 7.2485 2.0183 C 7.7161 2.5476 8 3.2426 8 4 C 8 4.7244 7.7444 5.3871 7.3189 5.9051 C 7.3601 5.9209 7.4011 5.9371 7.4417 5.9539 Z\");\n}",
- "timestamp": 1636761712000
- }
-]
\ No newline at end of file
diff --git a/users/infinidoge/config/powercord/css-toggler.json b/users/infinidoge/config/powercord/css-toggler.json
deleted file mode 100644
index a568d75..0000000
--- a/users/infinidoge/config/powercord/css-toggler.json
+++ /dev/null
@@ -1,93 +0,0 @@
-{
- "snippetDetails": {
- "780838821662294068": {
- "title": "Remove Help Button"
- },
- "907333488779354112": {
- "title": "Channel Banner Switch",
- "description": "Replaces the channel banner tabs with a single switch"
- },
- "907442893608869888": {
- "title": "Revert Channel Members Icon"
- },
- "864076332505497641": {
- "title": "Make Grey toggle switch Red"
- },
- "865809923878682634": {
- "title": "Large Jumbo Emotes"
- },
- "870054555025543219": {
- "title": "Resizeable Thread Sidebar"
- },
- "885158901673230376": {
- "title": "Extended User Panel"
- },
- "875021875120582676": {
- "title": "Stop Server Icon Shrinking"
- },
- "870552834410680370": {
- "title": "Colorful Context Menu"
- },
- "863870341537071197": {
- "title": "Colorful Member List",
- "description": "Makes the member list more colorful by adding a semi-transparent colored rectangle around users"
- },
- "865701620201685012": {
- "title": "2-Lined Channel Topic"
- },
- "898512654849687592": {
- "title": "Wide Settings"
- },
- "921928336802971699": {
- "title": "Horizontally Listed Media"
- },
- "929485841229815859": {
- "title": "Fix Server List Lag",
- "description": "Fixes the server list lagging on many Linux distros"
- },
- "929440925791449148": {
- "title": "Jump to Message Buttons",
- "description": "Replaces message links with a 'Jump to Message' button"
- },
- "931904851586195476": {
- "title": "Make PronounDB match timestamps",
- "description": "Adjusts font size and weight of PronounDB's pronouns in chat to make them identical to timestamps, and makes it so that "
- },
- "949006652944834560": {
- "title": "Unclamp About Me Length"
- },
- "949001991567343616": {
- "title": "Expand Text Bar",
- "description": "Expands the text bar to be the width of the message screen, and aligns it with the user modal."
- },
- "951894639596666940": {
- "title": "Readd Media Opening Animation"
- },
- "988930072675246080": {
- "title": "About Me Pronouns"
- }
- },
- "collapsedSnippets": [
- "870552834410680370",
- "870054555025543219",
- "864076332505497641",
- "865809923878682634",
- "780838821662294068",
- "907333488779354112",
- "929485841229815859",
- "929440925791449148",
- "949001991567343616",
- "931904851586195476",
- "921928336802971699",
- "949006652944834560",
- "951894639596666940",
- "885158901673230376",
- "898512654849687592",
- "875021875120582676",
- "865701620201685012",
- "863870341537071197",
- "907442893608869888",
- "988930072675246080"
- ],
- "show-quick-header": false
-}
\ No newline at end of file
diff --git a/users/infinidoge/config/powercord/css-toggler.json.bak b/users/infinidoge/config/powercord/css-toggler.json.bak
deleted file mode 100644
index af0ac3b..0000000
--- a/users/infinidoge/config/powercord/css-toggler.json.bak
+++ /dev/null
@@ -1,43 +0,0 @@
-{
- "snippetDetails": {
- "780838821662294068": {
- "title": "Remove Help Button"
- },
- "907333488779354112": {
- "title": "Channel Banner Switch",
- "description": "Replaces the channel banner tabs with a single switch"
- },
- "907442893608869888": {
- "title": "Revert Channel Members Icon"
- },
- "864076332505497641": {
- "title": "Make Grey toggle switch Red"
- },
- "865809923878682634": {
- "title": "Large Jumbo Emotes"
- },
- "870054555025543219": {
- "title": "Resizeable Thread Sidebar"
- },
- "885158901673230376": {
- "title": "Extended User Panel"
- },
- "875021875120582676": {
- "title": "Stop Server Icon Shrinking"
- },
- "870552834410680370": {
- "title": "Colorful Context Menu"
- },
- "863870341537071197": {
- "title": "Colorful Member List",
- "description": "Makes the member list more colorful by adding a semi-transparent colored rectangle around users"
- },
- "865701620201685012": {
- "title": "2-Lined Channel Topic"
- },
- "898512654849687592": {
- "title": "Wide Settings"
- }
- },
- "collapsedSnippets": []
-}
diff --git a/users/infinidoge/config/powercord/dm-typing-indicator.json b/users/infinidoge/config/powercord/dm-typing-indicator.json
deleted file mode 100644
index 2d34fa0..0000000
--- a/users/infinidoge/config/powercord/dm-typing-indicator.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "indicatorStyle": "both",
- "ignoreNonFriend": false
-}
\ No newline at end of file
diff --git a/users/infinidoge/config/powercord/pc-emojiUtility.json b/users/infinidoge/config/powercord/pc-emojiUtility.json
deleted file mode 100644
index 543aa1f..0000000
--- a/users/infinidoge/config/powercord/pc-emojiUtility.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "useEmbeds": false,
- "displayLink": true,
- "includeIdForSavedEmojis": true,
- "defaultCloneIdUseCurrent": false
-}
\ No newline at end of file
diff --git a/users/infinidoge/config/powercord/pc-general.json b/users/infinidoge/config/powercord/pc-general.json
deleted file mode 100644
index 4203074..0000000
--- a/users/infinidoge/config/powercord/pc-general.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "advancedSettings": false,
- "experiments": true,
- "disabledPlugins": [
- "pc-lmgtfy",
- "pc-spotify",
- "pc-heygirl",
- "Better-Settings"
- ]
-}
\ No newline at end of file
diff --git a/users/infinidoge/config/powercord/pc-moduleManager.json b/users/infinidoge/config/powercord/pc-moduleManager.json
deleted file mode 100644
index 231845e..0000000
--- a/users/infinidoge/config/powercord/pc-moduleManager.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "cm-height": 1164
-}
\ No newline at end of file
diff --git a/users/infinidoge/config/powercord/pc-updater.json b/users/infinidoge/config/powercord/pc-updater.json
deleted file mode 100644
index 11eba57..0000000
--- a/users/infinidoge/config/powercord/pc-updater.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "paused": false,
- "failed": false,
- "checking": false,
- "updating": false,
- "awaiting_reload": false,
- "checking_progress": null,
- "last_changelog": "updates-26-04-20",
- "updates": [],
- "last_check": 1636564355304,
- "automatic": false,
- "disabled": true
-}
\ No newline at end of file
diff --git a/users/infinidoge/config/powercord/quickcss.css b/users/infinidoge/config/powercord/quickcss.css
deleted file mode 100644
index 08bf296..0000000
--- a/users/infinidoge/config/powercord/quickcss.css
+++ /dev/null
@@ -1,248 +0,0 @@
-/**
- * Snippet from #css-snippets applied the Nov 12, 2021 at 11:22:53 AM
- * Created by mr_miner#9699 (678541597654253600)
- * Snippet ID: 870552834410680370
- */
-#message-actions-pin, #message-pin, #message-unpin{
- color: skyblue;
-}
-#message-actions-pin:hover, #message-pin:hover, #message-unpin:hover {
- background-color: #67a7c0;
- color: #fff;
-}
-#message-actions-reply, #message-reply {
- color: khaki;
-}
-#message-actions-reply:hover, #message-reply:hover {
- background-color: #c5bb5d;
- color: #fff;
-}
-#message-actions-thread, #message-thread {
- color: #69c069;
-}
-#message-actions-thread:hover, #message-thread:hover {
- background-color: #5dbd5d;
- color: #fff;
-}
-#message-actions-mark-unread, #message-mark-unread {
- color: plum;
-}
-#message-actions-mark-unread:hover, #message-mark-unread:hover {
- background-color: #c27ec2;
- color: #fff;
-}
-#message-actions-copy-link, #message-copy-link {
- color: lightseagreen;
-}
-#message-actions-copy-link:hover, #message-copy-link:hover {
- background-color: #199c96;
- color: #fff;
-}
-#message-actions-tts, #message-tts{
- color: var(--brand-experiment);
-}
-#message-actions-tts:hover, #message-tts:hover{
- background-color: var(--brand-experiment);
- color: #fff;
-}
-#message-actions-copy-id, #message-devmode-copy-id {
- color: lightsalmon;
-}
-#message-actions-copy-id:hover #message-devmode-copy-id:hover{
- background-color: lightsalmon;
- color: #fff;
-}
-#message-edit, #message-actions-edit{
- color: steelblue;
-}
-#message-edit:hover, #message-actions-edit:hover{
- background-color: steelblue;
- color: #fff;
-}
-#message-add-reaction{
- color: goldenrod;
-}
-#message-add-reaction:hover{
- background-color: goldenrod;
- color: #fff;
-}
-/** 870552834410680370 */
-
-/**
- * Snippet from #css-snippets applied the Nov 12, 2021 at 11:23:11 AM
- * Created by Hekky#6869 (346338830011596800)
- * Snippet ID: 870054555025543219
- */
-:root {
- --sidebar-width: 240px; /* change if your theme resizes the sidebar */
-}
-.chat-3bRxxu.threadSidebarOpen-vdkwIh {
- resize: horizontal;
- min-width: 400px;
- max-width: calc(100vw - var(--sidebar-width) - 72px - 400px);
-}
-.chat-3bRxxu:not(.threadSidebarOpen-vdkwIh) {
- width: unset !important;
- flex: 1 1 auto;
-}
-.threadSidebar-1o3BTy {
- width: unset;
- flex: 1 1 auto;
-}
-/** 870054555025543219 */
-
-
-
-
-
-/**
- * Snippet from #css-snippets applied the Nov 12, 2021 at 11:24:53 AM
- * Created by mr_miner#9699 (678541597654253600)
- * Snippet ID: 864076332505497641
- */
-.container-3auIfb[style*="opacity: 1; background-color: hsl(218, calc(var(--saturation-factor, 1) * 4.6%), 46.9%);"]{
- background-color: #c13a3a !important;
- fill: #c13a3a !important;
-}
-.container-3auIfb[style*="opacity: 1; background-color: hsl(218, calc(var(--saturation-factor, 1) * 4.6%), 46.9%);"] path{
- fill: #c13a3a !important;
-}
-/** 864076332505497641 */
-
-
-
-
-
-
-
-/**
- * Snippet from #css-snippets applied the Dec 22, 2021 at 2:53:56 PM
- * Created by Freeplay#5676 (158296466119458816)
- * Snippet ID: 921928336802971699
- */
-/* Horizontally listed media */
-[id*="message-accessories-"] {
- display: flex;
- flex-wrap: wrap;
-}
-[id*="message-accessories-"] > * {
- margin-right: .4em !important;
- min-height: 100% !important;
-}
-[id*="message-accessories-"] > div > a {
- display: flex;
- align-items: center;
- min-height: 100%;
- background-color: var(--background-secondary);
-}
-[id*="message-reactions"] {
- width: 100%;
-}
-/** 921928336802971699 */
-
-/**
- * Snippet from #css-snippets applied the Jan 9, 2022 at 12:34:26 AM
- * Created by ThatOtherAndrew#8134 (650459420635168769)
- * Snippet ID: 929440925791449148
- */
-[title^="https://discord.com/channels/"], [title^="https://ptb.discord.com/channels/"], [title^="https://canary.discord.com/channels/"] {
- line-height: 0;
- font-size: 0;
- text-decoration-color: #fff !important;
-}
-[title^="https://discord.com/channels/"]::before, [title^="https://ptb.discord.com/channels/"]::before, [title^="https://canary.discord.com/channels/"]::before {
- content: "✉ Jump to Message";
- font-size: 16px;
- user-select: text;
- font-weight: 500;
- transition: background-color 50ms ease-out, color 50ms ease-out;
- cursor: pointer;
- border-radius: 3px;
- padding: 0 2px;
- background: hsla(235, calc(var(--saturation-factor, 1) * 85.6%), 64.7%, 0.3);
- color: hsl(236, calc(var(--saturation-factor, 1) * 83.3%), 92.9%);
-}
-[title^="https://discord.com/channels/"]:hover::before, [title^="https://ptb.discord.com/channels/"]:hover::before, [title^="https://canary.discord.com/channels/"]:hover::before {
- background-color: hsl(235, calc(var(--saturation-factor, 1) * 85.6%), 64.7%);
- color: #fff;
-}
-/** 929440925791449148 */
-
-/**
- * Snippet from #css-snippets applied the Jan 9, 2022 at 12:34:48 AM
- * Created by george.#0550 (590224302578860065)
- * Snippet ID: 929485841229815859
- */
-.wrapper-28eC3z svg {
- overflow: hidden;
-}
-/** 929485841229815859 */
-
-/**
- * Snippet from #css-snippets applied the Jan 16, 2022 at 12:09:04 AM
- * Created by 5h3i1ah#6253 (268947234861744130)
- * Snippet ID: 931904851586195476
- */
-.pronoundb-pronouns {
- font-size: 0.75rem !important;
- height: 1.25rem;
- cursor: default;
- font-weight: 500;
-}
-/** 931904851586195476 */
-
-/**
- * Snippet from #css-snippets applied the 7 Mar 2022 at 22:05:26
- * Created by katlyn#9607 (250322741406859265)
- * Snippet ID: 949006652944834560
- */
-.clamped-2ZePhX {
- -webkit-line-clamp: unset;
-}
-/** 949006652944834560 */
-
-/**
- * Snippet from #css-snippets applied the 11 Mar 2022 at 15:48:07
- * Created by Davri#0015 (457579346282938368)
- * Snippet ID: 951894639596666940
- */
-.modal-3Crloo .wrapper-2bCXfR {
- opacity: 0;
- animation: mediapopup 190ms ease-out forwards;
- animation-delay: 80ms;
-}
-@keyframes mediapopup {
- 0% {
- transform: scale(0.65);
- }
- 70% {
- opacity: 1;
- transform: scale(1.012);
- }
- 100% {
- opacity: 1;
- transform: scale(1);
- }
-}
-/** 951894639596666940 */
-
-/**
- * Snippet from #css-snippets applied the 21 Jun 2022 at 18:39:11
- * Created by Snare-Hawk#6331 (301082610438897664)
- * Snippet ID: 988930072675246080
- */
-/* adds horizontal lines to space out pronouns in about me */
-.pronoundb-pronouns.aboutMeBody-1J8rhz,
-.aboutMeBody-1J8rhz.markup-eYLPri.clamped-2ZePhX {
- --separation: 10px 0;
- --borders: 1px var(--background-modifier-accent) solid;
- font-size: 14px !important;
- margin: var(--separation);
- padding: var(--separation);
- border-top: var(--borders);
- border-bottom: var(--borders);
-}
-.aboutMeTitle-3pjiS7 {
- display: none;
-}
-/** 988930072675246080 */
\ No newline at end of file
diff --git a/users/infinidoge/config/powercord/user-birthdays.json b/users/infinidoge/config/powercord/user-birthdays.json
deleted file mode 100644
index 7b85bba..0000000
--- a/users/infinidoge/config/powercord/user-birthdays.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "alertSound": "",
- "alertToasts": true,
- "alertDesktop": false,
- "friendsToolbarIcon": true,
- "toolbarIcon": true
-}
\ No newline at end of file
diff --git a/users/infinidoge/default.nix b/users/infinidoge/default.nix
index 4a0c347..fb3af5a 100644
--- a/users/infinidoge/default.nix
+++ b/users/infinidoge/default.nix
@@ -46,7 +46,7 @@ in
# libreoffice-fresh
- discord-canary # FIXME: powercord
+ discord-canary
(lib.optional main.modules.hardware.form.desktop qbittorrent)
])