An abstraction of the Twitch Extension helper for VueX
This lib allow you to abstract the Twitch extension helper for your twitch extension project using Vue / Vuex.
You can easily have a reactive Twitch extension without worrying about all the set up.
- Vue
- Vuex
By default the store will be accessible on the twitch
module.
You need to create the store before using it in the plugin.
import Vue from "vue";
import App from "./App";
import Vuex from "vuex";
import { ExtensionPlugin } from "twitchext-vuex";
Vue.use(Vuex);
const store = new Vuex.Store();
Vue.use(ExtensionPlugin, { store });
new Vue({
el: "#app",
store,
render: h => h(App)
});
You will be able to to access the data as computed values
computed(){
...
opaqueId(){
return this.$twitchExtension.viewer.id
}
}
The data structure is based on the - Twitch Extension Helper
You can access the data using the same structure
...
computed:{
...
opaqueId(){
return this.$twitchExtension.viewer.id
}
}
bits.getBitsAmount(sku:string):number
return the bits amount of given sku. Return 0 if the sku doesn't exist.
bits.hasOngoingBitTransaction:boolean
return if the user has a bits transaction going on.
channel.initialized:boolean
return if the channel information have been set.
id:string
return the channel id of the stream.
configuration.initialized:boolean
return if the configuration service has been set.
position.initialized:boolean
return if the position information have been set.
viewer.initialized:boolean
return if the viewer information have been set.
For the default data structure see the OnContext method.
The same structure is used to store the data under the context
field.
context.initialized:boolean
return if the context information have been set.
For the default data structure see the Query Params doc.
Use this.$twitchExtension.queryParams
to access the values.
When developing your extension, you might want to force some feature flags to true.
These are only meant to make testing easier! Remember to turn these values off when sending to review.
Set the value
Vue.use(ExtensionPlugin, { store, settings:{
forceFlags:{
forceIsBitsEnabled:true
}
}});
Access it
this.$store.state.forceIsBitsEnabled
You can use a custom VueX module name to match your project needs
Vue.use(Vuex);
const store = new Vuex.Store();
Vue.use(ExtensionPlugin, { store, module:'extension' });
new Vue({
el: "#app",
store,
render: h => h(App)
});
You can use my other package for React : TwitchExt-React