spicetify / marketplace Goto Github PK
View Code? Open in Web Editor NEWDownload extensions and themes directly from Spicetify
License: MIT License
Download extensions and themes directly from Spicetify
License: MIT License
What I have now, with the "installed" tab cards loading just from localstorage, it's super fast, but also caches the stars at install time and never updates them. We may want a hybrid approach that just runs API calls if stars are enabled, or render the cards, but trigger an API call on creation that seamlessly updates the stars after render.
Add spicetify-cli repo as first thing to check/fetch
Can use the modal for this. Would make it so you don't see stuff in the main tab if you have it installed already
The scss stack was added mostly so I could easily nest/scope the water.css stylesheet into the readme pages, to get some basic styling in. I also just like how is more modular/readable. It does mean that the build/install process is more complicated for the main Spicetify repo if/when the marketplace is merged in.
I'm wondering if we are able to add a GitHub action to compile the css on release or when it's changed. Otherwise we might have to pick through water.css and strip anything extra, and end up with a lot of messy css for the custom app.
Right now, the "show stars" and "show installed in marketplace" settings always shows a checkmark, and the tab options always shows an x. The icon lights up a bit based on if it's enabled or not. It's not super clear what the icon means and what clicking it will do. We should make the icons change from a checkmark to an x and vice versa, or display an actual toggle switch UI if possible.
When switching back and forth between the marketplace and installed tabs, it makes a LOT of API calls (since we have one per page and then another one per extension in the results). This results in the API limit being hit and the calls to 403 error, which breaks stuff.
We should see if there is a way to fetch what we need without gobbling up API calls like it's pumpkin pie on Thanksgiving. And if that's not possible, at least have a more graceful fallback than just being stuck indefinitely with a loading icon.
From the local storage keys, function names, settings, etc.
This can be fixed with some simple CSS I believe, will hopefully lead to a cleaner look.
Maybe at some point we can add a bookmark/star feature to keep track of extensions. Either that or allow enabling/disabling them without uninstalling. I'm not even sure if that concept makes sense, if we're just going to be injecting them with JS initially. Just an idea.
Make it do the right stuff, different stuff than extensions.
We might need to add a branch key to the manifest, since I believe it just uses the default now. This would allow people to have a marketplace-specific branch, or a branch that houses releases as opposed to dev stuff.
Remove pops up the ReloadModal, but it doesn't run the apply code when installing (since it just applies in the extension js)
It downloads the colour schemes on theme install, and caches them with the card/localstorage. While themes themselves will always be up-to-date, since they directly reference the css file, the colour schemes are cached in this way and won't update if the color.ini is updated on GitHub.
Should be fairly easy to resolve, just need to add some error handling where the manifest is retrieved, such as someway to distinguish whether or not it has the components we need.
Right now there's nothing and it looks bad. Maybe grab something like water.css and modify to use the spicetify theme colours?
We could add a manifest key for an array of additional JS files I suppose. That would allow dribblish dynamic to work, since it needs an extension.
Maybe we can show the extension's GitHub readme when you click on the card, as a bigger preview.
Relevant API route:
https://docs.github.com/en/rest/reference/repos#get-a-repository-readme
^ title
Describe the bug
Currently, you can only blacklist an entire repository, would most likely be a good idea to add the ability to blacklist individual extensions on those repositories (but not necessary at this moment.)
We could have a download button that downloads/enables the extension, and change to a trash bin if they have it enabled already.
I've noticed if you go back and forth in tabs while it's loading, it will finish every load and have a million of them. We should have something to abort when switching pages
It would be great to allow for repos to house multiple extensions.
Options:
Indicate to user in some way and automate updating extensions.
Use latest commit ID from the repo's default branch (main or master or whatever).
We'd have to save the commit ID in our metadata somewhere and check against the repo.
This would only be for if we do a local copy of the extension (e.g. with shell integration). If we do remote injection, it's always up to date.
A little try button that injects using jsdelivr method and a download button that download locally the .js and will inject from there if not disabled
as discussed:
https://canary.discord.com/channels/842219447716151306/842819014941212682/892456113381974117
https://canary.discord.com/channels/842219447716151306/842819014941212682/892455076617138186
https://canary.discord.com/channels/842219447716151306/842819014941212682/892439466646593556
a tab that displays already installed extensions so users can easily manage them: disable or delete it
Describe the bug
Clicking off Settings modal closes it without reload
To Reproduce
Steps to reproduce the behaviour:
Expected behaviour
Spotify reloads, like when you hit the close button
Desktop (please complete the following information):
Reset button would need to delete all our keys. Not sure if we hardcode those in or iterate over localstorage (if possible) and delete anything starting with "marketplace".
Last I checked, extensions aren't loaded in until you open the marketplace app. We want them to be loaded in on Spotify launch.
We should check for a colour schemes ini file and skip the colour scheme injection step if there is none. We might also need to make sure that it doesn't break when removing the existing user.css link...
That way we don't need to fetch and parse the schemes on extension load. And then we can use that when rendering the colour scheme selector.
Can use the notification popup that spotify uses whenever a song can't be played.
This issue is for discussion on how to implement theme support. Someone brought up in Discord that you could add a custom "spicetify://" url handler that can be set up to run native commands. This would add a little extra setup for anyone using the store, but might work. We also want to be careful about fragmenting the code for different OSes, so probably not using any ActiveX shell stuff for Windows.
I feel like we should store the user+repo in the localstorage key or something, in case the "main" name is the same for more than one.
Add a tool tip "this rating might not reflect this extension" on rating when extensions come from the same repo as it will have the same stars repo but might not be as good as it is rated.
https://discord.com/channels/842219447716151306/842819014941212682/894004924025819186
khanhas previews are in the wiki so github links like: https://camo.githubusercontent.com/09bf34a4f5c626c38fcdc7fea9cd21d4468524cac00bf37a7fd8293dab2c06ff/68747470733a2f2f692e696d6775722e636f6d2f697367553454532e706e67
need a way to handle them so we can display them
Currently it just removes the extension from localstorage. We should call location.reload()
and/or show some indication that the user needs to reload for the changes to reset (since the extension may have changed the DOM etc).
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.