S
SolidJSā€¢3mo ago
hcker2000

Saving data to a store that has a getter?

i have an issue in that i need to figure out how to add to the scenes[selectedSceneId].sounds array that 2nd line was an idea but not a good one, im guessing i need to use a setter but am not quite sure how. This is my setter:
selectedSceneId: null,
playingSounds: false,
get selectedScene() {
return this.scenes.find(obj => obj.id === this.selectedSceneId);
},
selectedSceneId: null,
playingSounds: false,
get selectedScene() {
return this.scenes.find(obj => obj.id === this.selectedSceneId);
},
No description
No description
162 Replies
hcker2000
hcker2000OPā€¢3mo ago
I feel like this is really close
setStore("scenes", (scene) => scene.id == store.selectedScene, "sounds", scene.sounds.length, newSound )
setStore("scenes", (scene) => scene.id == store.selectedScene, "sounds", scene.sounds.length, newSound )
@Atila if you are around today and have a chance to help me out again that would be most appreciated i have also tried this
setStore("scenes", (scene) => scene.id == store.selectedScene, produce((sounds) => {
sounds.push(newSound)
return sounds
}) )
setStore("scenes", (scene) => scene.id == store.selectedScene, produce((sounds) => {
sounds.push(newSound)
return sounds
}) )
bigmistqke
bigmistqkeā€¢3mo ago
i use mergeProps sometimes for merging objects with getters, not sure if it's applicable in this situation.
hcker2000
hcker2000OPā€¢3mo ago
i might be able to do that, i feel like i would have to make a copy of the scenes array and then modify the scenes[selectedScene],sounds array and then do the mergeProps to get the scenes back into the store
bigmistqke
bigmistqkeā€¢3mo ago
that sounds complicated if u could make a minimal repro of what u wanna do in a playground i can have a look w u
Atila
Atilaā€¢3mo ago
maybe that's a long shot, but looking at your screenshot, I'd stopped unwrapping/cloning. something like..
setStore(produce(scene => scene.sound.push(data))
setStore(produce(scene => scene.sound.push(data))
produce will receive a function where the current store is the param. Then, you can mutate it as you see fit and it will efficiently merge to the current store. It's perfect for these granular mutations/appends.
hcker2000
hcker2000OPā€¢3mo ago
@Atila that unwrap clone is just to get the base object to create a new one as there will not be any sounds in the array at startup. so im not sure i follow that set store and how it helps me
hcker2000
hcker2000OPā€¢3mo ago
No description
hcker2000
hcker2000OPā€¢3mo ago
in reality those probably need moved out of the store as they should never get changed ill see if i can get a simple version up on the playground
hcker2000
hcker2000OPā€¢3mo ago
Solid Playground
Quickly discover what the solid compiler will generate from your JSX template
bigmistqke
bigmistqkeā€¢3mo ago
Solid Playground
Quickly discover what the solid compiler will generate from your JSX template
hcker2000
hcker2000OPā€¢3mo ago
So yea i was really close a couple times
hcker2000
hcker2000OPā€¢3mo ago
Solid Playground
Quickly discover what the solid compiler will generate from your JSX template
hcker2000
hcker2000OPā€¢3mo ago
thats adjusted to make a copy of the default sound
bigmistqke
bigmistqkeā€¢3mo ago
truee forgot about ({ id }) => id === store.selectedSceneId and yes structuredClone is definitely also possible, mb smarter if you want to add nesting later on.
hcker2000
hcker2000OPā€¢3mo ago
yea what does that do why does
({ id }) => id === store.selectedSceneId
({ id }) => id === store.selectedSceneId
need the {}
bigmistqke
bigmistqkeā€¢3mo ago
structuredClone is not the fastest, but if you don't have to do it a lot it's perfectly fine it's a filter function, you could also write it like
(scene) => scene.id === store.selectedSceneId
(scene) => scene.id === store.selectedSceneId
hcker2000
hcker2000OPā€¢3mo ago
so is the {} just short hand for the object at this spot?
bigmistqke
bigmistqkeā€¢3mo ago
yes, it's destructuring šŸ™‚
hcker2000
hcker2000OPā€¢3mo ago
ok i had setStore("scenes", (scene) => scene.id == store.selectedSceneId which seems to match what you said was an alternative
bigmistqke
bigmistqkeā€¢3mo ago
yes exactly
hcker2000
hcker2000OPā€¢3mo ago
so close all i needed was (sounds) => [...sounds, newSound] does that trigger all the sounds to react? im assuming it would because of the spread
bigmistqke
bigmistqkeā€¢3mo ago
you could also do it without the spread tbh
hcker2000
hcker2000OPā€¢3mo ago
just doing => newSound?
bigmistqke
bigmistqkeā€¢3mo ago
Solid Playground
Quickly discover what the solid compiler will generate from your JSX template
bigmistqke
bigmistqkeā€¢3mo ago
Solid Playground
Quickly discover what the solid compiler will generate from your JSX template
bigmistqke
bigmistqkeā€¢3mo ago
produce is a way of how to take mutations and then turn them into fine-grained updates. the sounds it passes to the callback is a proxy. a forgot to answer: no, it wouldn't cause the other sounds to react. their internal signals will be set, but because it will be set to the identical same value it does not trigger any updates. but it would mean that the reference to store.selectedScene.sounds would change
hcker2000
hcker2000OPā€¢3mo ago
ahh ok not sure that matters in my case but perhaps ill use the array.length method
bigmistqke
bigmistqkeā€¢3mo ago
if you go for that pattern i would advice to untrack store.selectedScene.sounds.length: otherwise if you would call addSound in an effect it would currently loop forever. (you would update the array in an effect šŸ‘‰ array length changes šŸ‘‰ effect runs šŸ‘‰ update the array šŸ‘‰...)
bigmistqke
bigmistqkeā€¢3mo ago
Solid Playground
Quickly discover what the solid compiler will generate from your JSX template
bigmistqke
bigmistqkeā€¢3mo ago
that's why mb the produce-pattern is safer
hcker2000
hcker2000OPā€¢3mo ago
interesting and good to know
bigmistqke
bigmistqkeā€¢3mo ago
hope i m not overwhelming you with the options!
hcker2000
hcker2000OPā€¢3mo ago
nope its good to know all the ways i do need to fix some code as i think i have that loop condition
hcker2000
hcker2000OPā€¢3mo ago
No description
bigmistqke
bigmistqkeā€¢3mo ago
if u are planning to use it in an effect that is something to be careful for, yes
hcker2000
hcker2000OPā€¢3mo ago
im not right now but i may in the future and forget about this
bigmistqke
bigmistqkeā€¢3mo ago
exactly šŸ¦¶ šŸ”«
hcker2000
hcker2000OPā€¢3mo ago
so i swapped them to spreads and made a mental note not to use the .length way of doing things so lets say i need to send an unwrapped version to an api end point
bigmistqke
bigmistqkeā€¢3mo ago
ye, always keep in mind that property access on a store is like accessing a signal
hcker2000
hcker2000OPā€¢3mo ago
how would one watch the whole store for changes and react?
bigmistqke
bigmistqkeā€¢3mo ago
a yes, classic q there is a solid-primitive for that but imo cleanest way of doing it is just proxying the store-setter something like
const [store, _setStore] = createSignal(...)

const setStore = (...args) => {
_setStore(...args)
uploadToApi(store)
}
const [store, _setStore] = createSignal(...)

const setStore = (...args) => {
_setStore(...args)
uploadToApi(store)
}
hcker2000
hcker2000OPā€¢3mo ago
nice ok ill need that to send this store back to electron to save to the local filesystem
bigmistqke
bigmistqkeā€¢3mo ago
typing of that is a bit of a pain tho, u will need to do some casting to make it work
hcker2000
hcker2000OPā€¢3mo ago
does the solid primitive do that for me?
bigmistqke
bigmistqkeā€¢3mo ago
o there are some nice localstorage primitives! honestly: https://primitives.solidjs.community/ the unsung hero of solidjs
hcker2000
hcker2000OPā€¢3mo ago
im already using one some place lol oh man this just wraps a store and lets you save it to disk without thinking about it
bigmistqke
bigmistqkeā€¢3mo ago
i knooow createPersisted is amazing
hcker2000
hcker2000OPā€¢3mo ago
im assuming it also loads it from disk as well
bigmistqke
bigmistqkeā€¢3mo ago
yup
hcker2000
hcker2000OPā€¢3mo ago
man this is going to make finishing this so much easier
bigmistqke
bigmistqkeā€¢3mo ago
ye really worth just scrolling through all the primitives so they are somewhere in ur subconscious
hcker2000
hcker2000OPā€¢3mo ago
ahh here we go im using createContextProvider which is also magic im sure i will have questions aon createPersisted as im running inside electron so not sure how that all plays together
bigmistqke
bigmistqkeā€¢3mo ago
should be perfectly fine since electron is just chrome in the end lol, just by looking for u in the primitives i found something that could be really handy for a project i m working on rn
hcker2000
hcker2000OPā€¢3mo ago
nice
hcker2000
hcker2000OPā€¢3mo ago
Solid Primitives
A library of high-quality primitives that extend SolidJS reactivity
hcker2000
hcker2000OPā€¢3mo ago
but dont show the source code... or am i missing something ok i found the sources on github humm well its as simple as makePersisted but it dosnt seem to work with electron unless i needed to kill the window after the npm install rather that just use the hot reload nope no dice
bigmistqke
bigmistqkeā€¢3mo ago
mm strange
hcker2000
hcker2000OPā€¢3mo ago
yea ill have to dig in some more, im guessing maybe when running as dev it has issues
bigmistqke
bigmistqkeā€¢3mo ago
maybe, but i wouldn't know how it just accesses localStorage but mb i m missing something
hcker2000
hcker2000OPā€¢3mo ago
yea i think it may flush local storage on start if your in dev also there are people saying it works some times and then randomly breaks at other times so who knows i might need to send the json back to electron to write out, still dosnt seem that complex
hcker2000
hcker2000OPā€¢3mo ago
No description
hcker2000
hcker2000OPā€¢3mo ago
some kind of warning so thats probably it as it dosnt seem to like that i have no setter maybe i feel like i keep shooting myself in the foot her e after adding the primitive storage it dosnt like this Store.selectedScene.sounds.forEach even though im not changing anything inside the foreach
hcker2000
hcker2000OPā€¢3mo ago
No description
bigmistqke
bigmistqkeā€¢3mo ago
o i see it has some problems w serialising the getter that does make a lot of sense
hcker2000
hcker2000OPā€¢3mo ago
the serialized version of selectScene should probably just be null
bigmistqke
bigmistqkeā€¢3mo ago
undocumented, but powerful feature: you can compose stores.
const [scenes] = makePersisted(createStore(...))
const [store, setStore] = createStore({
...,
scenes
})
const [scenes] = makePersisted(createStore(...))
const [store, setStore] = createStore({
...,
scenes
})
hcker2000
hcker2000OPā€¢3mo ago
so you could make a simpler version for makePersisted then add the getter in the createStore
bigmistqke
bigmistqkeā€¢3mo ago
the opposite also works btw:
const [store, setStore] = createStore({
...,
scenes: [...]
})
const [scene0, setScene0] = createStore(store.scene[0])
const [store, setStore] = createStore({
...,
scenes: [...]
})
const [scene0, setScene0] = createStore(store.scene[0])
exactly
hcker2000
hcker2000OPā€¢3mo ago
ill have to give that a go as i dont care about having any scene selected when the app loads my larger issue now is getting my sounds playable/stopable again i tried removing the makePersisted and that didnt do it so it wasnt that change
bigmistqke
bigmistqkeā€¢3mo ago
bugs be bugging
hcker2000
hcker2000OPā€¢3mo ago
does this look valid for looping and creating audio players>
hcker2000
hcker2000OPā€¢3mo ago
No description
hcker2000
hcker2000OPā€¢3mo ago
the error i get is
hcker2000
hcker2000OPā€¢3mo ago
No description
hcker2000
hcker2000OPā€¢3mo ago
its complaining about this line
No description
hcker2000
hcker2000OPā€¢3mo ago
yea its really weird
bigmistqke
bigmistqkeā€¢3mo ago
code looks good from my pov
hcker2000
hcker2000OPā€¢3mo ago
it does seem to update the store as other objects respond to those props
bigmistqke
bigmistqkeā€¢3mo ago
ye not sure!
hcker2000
hcker2000OPā€¢3mo ago
@bigmistqke ok what am i doing wrong
const [baseStore, setBaseStore] = makePersisted(createStore(createInitialStoreValue()))
const [store, setStore] = createStore({
baseStore,
get selectedScene() {
return this.scenes.find(obj => obj.id === this.selectedSceneId);
}
})
const [baseStore, setBaseStore] = makePersisted(createStore(createInitialStoreValue()))
const [store, setStore] = createStore({
baseStore,
get selectedScene() {
return this.scenes.find(obj => obj.id === this.selectedSceneId);
}
})
hcker2000
hcker2000OPā€¢3mo ago
createInitialStoreValue
No description
hcker2000
hcker2000OPā€¢3mo ago
No description
bigmistqke
bigmistqkeā€¢3mo ago
something with the this resolution, maybe return store.scenes.find(...)? tbh never tried this pattern with makePersisted so i could be wrong!
bigmistqke
bigmistqkeā€¢3mo ago
https://playground.solidjs.com/anonymous/64e8ddd3-501f-424a-9db0-890192d99c7c i can not seem to reproduce it. what i did find out tho is that you do need to use the setter from makePersisted if u want to actually persist the data
Solid Playground
Quickly discover what the solid compiler will generate from your JSX template
bigmistqke
bigmistqkeā€¢3mo ago
a const getCurrentScene = () => store.scenes[store.currentSceneId] instead of a getter in the store could simplify things too
hcker2000
hcker2000OPā€¢3mo ago
ill take a look at that playground ok so setStore needs swapped to setPersisted @bigmistqke got the local storage working without changes just need to specify the name option for makePersisted wellllll maybe it worked once
bigmistqke
bigmistqkeā€¢3mo ago
truee there is a name option
hcker2000
hcker2000OPā€¢3mo ago
hum well one issue i found it it seems to trim off properties with empty arrays šŸ˜¦ debugging now to see if its due to something im doing
hcker2000
hcker2000OPā€¢3mo ago
No description
hcker2000
hcker2000OPā€¢3mo ago
that does the trick even loads up the scene that i last had selected when i closed the app well close lol
{
"selectedSceneId": "e9ce6d2b-fcce-4490-b359-daba2c30766a",
"playingSounds": false,
"selectedScene": {
"id": "e9ce6d2b-fcce-4490-b359-daba2c30766a",
"title": "test",
"description": "test",
"sounds": [],
"tags": [
"tavern",
"night"
]
},
"scenes": [
{
"id": "e9ce6d2b-fcce-4490-b359-daba2c30766a",
"title": "test",
"description": "test",
"sounds": [],
"tags": [
"tavern",
"night"
]
},
{
"id": "000d90fc-6f85-4a92-ba19-576388875ed6",
"title": "test2",
"description": "",
"sounds": [],
"tags": [
"tavern",
"night"
]
}
]
}
{
"selectedSceneId": "e9ce6d2b-fcce-4490-b359-daba2c30766a",
"playingSounds": false,
"selectedScene": {
"id": "e9ce6d2b-fcce-4490-b359-daba2c30766a",
"title": "test",
"description": "test",
"sounds": [],
"tags": [
"tavern",
"night"
]
},
"scenes": [
{
"id": "e9ce6d2b-fcce-4490-b359-daba2c30766a",
"title": "test",
"description": "test",
"sounds": [],
"tags": [
"tavern",
"night"
]
},
{
"id": "000d90fc-6f85-4a92-ba19-576388875ed6",
"title": "test2",
"description": "",
"sounds": [],
"tags": [
"tavern",
"night"
]
}
]
}
notice how it saved selectedScene which breaks the getter i can probably just remove it on bootr
bigmistqke
bigmistqkeā€¢3mo ago
ye that's what i was thinking already, that it would serialize those getters/setters to actual values i remember when i started w solid i was doing a lot of this type of derived values in stores and stuff too
hcker2000
hcker2000OPā€¢3mo ago
I wasn't able to get it to work by clearing it out on startup So I'm thinking I'll send a signal from electron when the app is closed and then solid can send a signal back to electron with the json string to save Or modify the set store method like you showed earlier I just need to see what unwrap gives me on that store Worst case I'll make a new object to return that only has what I want in it
bigmistqke
bigmistqkeā€¢3mo ago
ye think that's a good idea, then u have full control over what u serialize and what not
hcker2000
hcker2000OPā€¢3mo ago
Yup
bigmistqke
bigmistqkeā€¢3mo ago
i would personally probably go for not having any derived state in the store and only having stuff i want serialised and do const getCurrentScene = () => store.scenes[store.currentSceneId] instead of doing the getter, but that would work too
hcker2000
hcker2000OPā€¢3mo ago
The only reason I haven't looked at that was I have some things that are using store.slectedScene I guess those would just change to getCurrentascene()
bigmistqke
bigmistqkeā€¢3mo ago
exactly
hcker2000
hcker2000OPā€¢3mo ago
@bigmistqke that seems to have worked better than expected i have one issue im tracking down after that switch to getSelectedScene() im not sure this is cool
hcker2000
hcker2000OPā€¢3mo ago
No description
bigmistqke
bigmistqkeā€¢3mo ago
how does that work?
hcker2000
hcker2000OPā€¢3mo ago
it probably does not lol
hcker2000
hcker2000OPā€¢3mo ago
No description
bigmistqke
bigmistqkeā€¢3mo ago
but then you would use the selectedScene as a key of the store?
hcker2000
hcker2000OPā€¢3mo ago
the key is selectedSceneId
bigmistqke
bigmistqkeā€¢3mo ago
yes, but setStore(selectedScene, 'sounds', ...) this is not valid code because then it's doing store[selectedScene].sounds...
hcker2000
hcker2000OPā€¢3mo ago
it did work with the selectedScene but not with getSelectedScene() setStore("scenes", 'selectedScene', 'sounds', index, produce((thisSound) => { i had that
bigmistqke
bigmistqkeā€¢3mo ago
yes, it did work with selectedScene because store.selectedScene would return the scene object so
hcker2000
hcker2000OPā€¢3mo ago
is that not what getSelectedScene is doing ? i thought find returned obj
bigmistqke
bigmistqkeā€¢3mo ago
eum yes, but store.selectedScene is accessing a getter store[selectedSceneObject] is trying to use an object as a key
hcker2000
hcker2000OPā€¢3mo ago
ook yea i figured it would not like that
bigmistqke
bigmistqkeā€¢3mo ago
but i think the question is: how to set current scene
hcker2000
hcker2000OPā€¢3mo ago
yea and that i can just use the filter again
bigmistqke
bigmistqkeā€¢3mo ago
yup that's a good way and you can always abstract it into a setCurrentScene-function if you don't want that code littered over your codebase
hcker2000
hcker2000OPā€¢3mo ago
true
No description
hcker2000
hcker2000OPā€¢3mo ago
i guess that not the same as CurrentScene is the id
bigmistqke
bigmistqkeā€¢3mo ago
no indeed I was thinking more like
const setSelectedScene = (...args) => {
return setStore('scene', ({id}) => id === store.currentSceneId, ...args)
}
const setSelectedScene = (...args) => {
return setStore('scene', ({id}) => id === store.currentSceneId, ...args)
}
hcker2000
hcker2000OPā€¢3mo ago
ohh nice i always think its going to be more complex but that spread opperator is nice
bigmistqke
bigmistqkeā€¢3mo ago
very useful!
hcker2000
hcker2000OPā€¢3mo ago
now i need a name for it though as that would only use used to set values on the selected scene and i have a setSelectedSene which updates the id and a few other cleanups
bigmistqke
bigmistqkeā€¢3mo ago
setSelectedSceneId?
hcker2000
hcker2000OPā€¢3mo ago
yup thats what i just did lol
hcker2000
hcker2000OPā€¢3mo ago
No description
hcker2000
hcker2000OPā€¢3mo ago
is that vscode lying to me or real ?
bigmistqke
bigmistqkeā€¢3mo ago
a ye typing that stuff is painful you can use SetStoreFunction to type the function so that the consumer's of this function get good types and just cast to any / ignore inside setSelectedScene
hcker2000
hcker2000OPā€¢3mo ago
whats the syntax for tying a function again?
bigmistqke
bigmistqkeā€¢3mo ago
Solid Playground
Quickly discover what the solid compiler will generate from your JSX template
hcker2000
hcker2000OPā€¢3mo ago
humm this is some weird behavior now not from that but i think from getSelectedScene its stopped reacting
hcker2000
hcker2000OPā€¢3mo ago
No description
hcker2000
hcker2000OPā€¢3mo ago
that no longer updates when the selectedScene is changed ahh i got it
bigmistqke
bigmistqkeā€¢3mo ago
yes, that is expected behavior
hcker2000
hcker2000OPā€¢3mo ago
const vs let
bigmistqke
bigmistqkeā€¢3mo ago
a no
hcker2000
hcker2000OPā€¢3mo ago
nopw=
bigmistqke
bigmistqkeā€¢3mo ago
it's because you accessed the signal in the component's body solid is the opposite of react: only when you are in effects then it is reactive effects include memo and jsx
hcker2000
hcker2000OPā€¢3mo ago
ok so how would this be resolved i have interfaces that use that all over
bigmistqke
bigmistqkeā€¢3mo ago
{selectedScene().description} call the function in the template
hcker2000
hcker2000OPā€¢3mo ago
ok isnt this going to find for ever y instance i use in the jsx?
bigmistqke
bigmistqkeā€¢3mo ago
i m not sure i understand that question
hcker2000
hcker2000OPā€¢3mo ago
like how many times is selectedScene() having to find the scene by id? everyTime i call selectedScene() right?
bigmistqke
bigmistqkeā€¢3mo ago
yes, but that was the same as u did before but then u had it wrapped in a getter
hcker2000
hcker2000OPā€¢3mo ago
true ok
bigmistqke
bigmistqkeā€¢3mo ago
u could memoize it but i wouldn't tbh except if you have like a million of those scenes
hcker2000
hcker2000OPā€¢3mo ago
this for sure is not a heavy app
bigmistqke
bigmistqkeā€¢3mo ago
ye in solid the philosophy is: derived first, if it's really expensive then mb memo
Lady Bluenotes
Lady Bluenotesā€¢3mo ago
@hcker2000 - it looks like this thread is pretty massive. are you finding the docs insufficient with what youā€™re doing?
hcker2000
hcker2000OPā€¢3mo ago
i fear i may have jumped in the deep end on this and am back learning TS and what not as i learn this the docs are clear but very granular i cant seem to get the info to piece the bits in the docs together
hcker2000
hcker2000OPā€¢3mo ago
@bigmistqke
No description
hcker2000
hcker2000OPā€¢3mo ago
still dosnt react did i mess up? this is how the nav updates things
hcker2000
hcker2000OPā€¢3mo ago
No description
hcker2000
hcker2000OPā€¢3mo ago
ignore stupid hot reload killing me again
Lady Bluenotes
Lady Bluenotesā€¢3mo ago
understandable! it can be daunting. our goal is to have the docs be sufficient for people looking into solid. so if you feel like thereā€™s anything we can do to improve them, feel free to put in some issues. i do worry that this might become a bit much for some of our ecosystem members so if you need some help with parts of this hopping into a voice chat / open sourcing your code may help people find the root of your troubles quicker, just as a suggestion
hcker2000
hcker2000OPā€¢3mo ago
yea its publicly available on git hub i might put in a request for more functional examples of complex things like this @bigmistqke i think its good now lets see if the primitive for the localStorageworks it does
hcker2000
hcker2000OPā€¢3mo ago
GitHub
GitHub - hcker2000/ttrpg-sounds: A soundboard for creating scenes (...
A soundboard for creating scenes (tavern, cave, epic battle) with multiple tracks - hcker2000/ttrpg-sounds
hcker2000
hcker2000OPā€¢3mo ago
@bigmistqke thanks a ton for helping me understand this
bigmistqke
bigmistqkeā€¢3mo ago
ur super welcome! project looks a lot of fun šŸ™‚
hcker2000
hcker2000OPā€¢3mo ago
it was a good intro to solidjs its also only my second time using electron the fist required a lot more electron level stuff happening as i need to talk between windows
bigmistqke
bigmistqkeā€¢3mo ago
coding is always learning, s one of my favorite things about it never ends
hcker2000
hcker2000OPā€¢3mo ago
yup im 14 years in doing php so programming is not new to me but figured learning something new while solving a problem i have would be a good way to do it @bigmistqke ok one more weird thing
hcker2000
hcker2000OPā€¢3mo ago
No description
hcker2000
hcker2000OPā€¢3mo ago
soundIndex() gives me int 0 which is wher that test sound is in the array
bigmistqke
bigmistqkeā€¢3mo ago
mm sorry man, this i won't be able to help u i would advice to do some logging code looks good afaict
hcker2000
hcker2000OPā€¢3mo ago
working on some logs now to see whats going on @bigmistqke found the issue it is how im exporting that function for the contectprovider it wasnt taking any of the args in
Want results from more Discord servers?
Add your server