Skip to content

Commit

Permalink
Merge pull request #27 from Colbydude/1.3.0
Browse files Browse the repository at this point in the history
1.3.0
  • Loading branch information
Colbydude authored Jun 10, 2020
2 parents 0c8e61c + 34f3a36 commit d5b5bf6
Show file tree
Hide file tree
Showing 11 changed files with 798 additions and 647 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,5 @@
Music Requests.json
npm-debug.log
yarn-error.log
.DS_Store
.env
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
},
"dependencies": {
"axios": "^0.19",
"tailwindcss": "^1.0.5",
"tailwindcss": "^1.2.0",
"vue": "^2.5.17",
"vue-i18n": "^8.0.0",
"vue-notification": "^1.3.13",
Expand Down
2 changes: 1 addition & 1 deletion resources/js/components/Viewer.vue
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
<button class="btn btn-blue-dark" @click="askForAuth">{{ $t('common.click_here') }}</button>
</p>
</div>
<queue-panel style="overflow: auto;" />
<queue-panel :settings="settings" style="overflow: auto;" />
</div>
</template>

Expand Down
60 changes: 55 additions & 5 deletions resources/js/components/common/RequestQueue.vue
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,16 @@
name: 'RequestQueue',
extends: TwitchPubSub,
props: {
settings: {
type: Object,
required: true
}
},
data () {
return {
currentRequest: null, // Value of the current request textbox.
lastPlayed: null, // The last played request.
requests: [] // The request queue.
};
},
Expand All @@ -30,8 +36,7 @@
},
mounted () {
this.getCurrentRequest();
this.getRequests();
this.refresh();
this.listen();
},
Expand All @@ -49,7 +54,34 @@
text: this.$t('common.requested_by') + ` ${request.twitch_username}`
});
this.requests.push(request);
if (this.settings.group_requests) {
let foundRequest = this.requests.find(item => item.song_id === request.song_id);
if (!foundRequest) {
this.requests.push({ amount: 1, ...request });
} else {
foundRequest.amount++;
const ids = foundRequest.twitch_user_id.split(',');
const usernames = foundRequest.twitch_username.split(',');
ids.push(request.twitch_user_id);
usernames.push(request.twitch_username);
foundRequest.twitch_user_id = ids.filter((v, i, a) => a.indexOf(v) === i).join(',');
foundRequest.twitch_username = usernames.filter((v, i, a) => a.indexOf(v) === i).join(',');
this.requests.sort((a, b) => {
if (a.amount === b.amount) {
return b.created_at - a.created_at;
}
return b.amount > a.amount ? 1 : -1;
});
}
} else {
this.requests.push(request);
}
},
/**
Expand Down Expand Up @@ -104,19 +136,37 @@
switch (message.header) {
case 'Current Request Updated': this.setCurrentRequest(message); break;
case 'Requests Cleared': this.clear(); break;
case 'Settings Saved': this.refresh(); break;
case 'Song Requested': this.addRequest(message); break;
case 'Song Skipped': this.removeRequest(message); break;
}
},
/**
* Get the current request and request queue.
*
* @return {void}
*/
refresh () {
this.getCurrentRequest();
this.getRequests();
},
/**
* Remove a request from the list.
*
* @param {Object} request
* @return {void}
*/
removeRequest (request) {
let item = this.requests.find(item => item.id === request.id);
let item;
if (this.settings.group_requests) {
item = this.requests.find(item => item.song_id === request.song_id);
}
else {
item = this.requests.find(item => item.id === request.id);
}
if (item) {
this.requests.splice(this.requests.indexOf(item), 1);
Expand Down
25 changes: 18 additions & 7 deletions resources/js/components/config/RequestCard.vue
Original file line number Diff line number Diff line change
Expand Up @@ -20,17 +20,23 @@
</div>
<div class="border-b">
<div class="flex px-4 py-2">
<div class="w-full text-sm font-bold">{{ $t('common.song') }}</div>
<div class="flex-no-shrink text-sm font-bold ml-2 mr-1">{{ $t('common.requested_by') }}</div>
<div class="flex-no-shrink text-sm font-bold ml-1">{{ $t('common.actions') }}</div>
<div class="w-full text-sm font-bold mr-1">{{ $t('common.song') }}</div>
<template v-if="settings.group_requests">
<div class="flex-no-shrink text-sm text-right font-bold ml-1 mr-1">{{ $t('common.amount') }}</div>
</template>
<div class="flex-no-shrink text-sm text-right font-bold ml-1 mr-1">{{ $t('common.requested_by') }}</div>
<div class="flex-no-shrink text-sm text-right font-bold ml-1">{{ $t('common.actions') }}</div>
</div>
</div>
<div v-if="requests.length > 0">
<div class="list-wrap">
<div class="list-item" v-for="(request, index) in requests" :key="request.id">
<div class="flex px-4 py-2 items-center">
<div class="w-full text-sm">{{ request.song.name }}</div>
<div class="flex-no-shrink text-sm font-semibold ml-2 mr-1">{{ request.twitch_username }}</div>
<div class="w-full text-sm mr-1">{{ request.song.name }}</div>
<template v-if="settings.group_requests">
<div class="flex-no-shrink text-sm text-right font-semibold ml-1 mr-1">{{ request.amount }}</div>
</template>
<div class="flex-no-shrink text-sm text-right font-semibold ml-1 mr-1">{{ request.twitch_username.split(',').join(', ') }}</div>
<button @click="playRequest(request.id)" class="flex-no-shrink btn btn-sm btn-blue-dark ml-1">
<i class="fas fa-fw fa-check"></i>
</button>
Expand Down Expand Up @@ -59,6 +65,13 @@
name: 'RequestCard',
extends: RequestQueue,
props: {
settings: {
type: Object,
required: true
}
},
methods: {
/**
* Clear the entire request list.
Expand All @@ -77,8 +90,6 @@
* @param {Number} id
*/
playRequest (id) {
this.lastPlayed = this.currentRequest;
this.$api.Ebs.postCurrentRequest(id)
.catch(error => logger(error));
},
Expand Down
2 changes: 1 addition & 1 deletion resources/js/mixins/Twitch.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ export default {

async beforeMount () {
if (this.twitch) {
if (this.twitch.rig) {
if (process.env.NODE_ENV === 'development') {
window.logger = this.twitch.rig.log.bind(this.twitch);
}

Expand Down
19 changes: 18 additions & 1 deletion resources/js/views/Config.vue
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<notifications position="bottom right" />

<div class="flex flex-wrap p-4 -mx-4" v-if="finishedLoading">
<request-card class="w-full lg:w-1/2 px-4 mb-6" />
<request-card :settings="settings" class="w-full lg:w-1/2 px-4 mb-6" />
<library-card class="w-full lg:w-1/2 px-4 mb-6" />

<div class="w-full lg:w-1/2 px-4 mb-6">
Expand All @@ -12,6 +12,22 @@
<div class="card-header">
<h3>{{ $t('config.extension_settings') }}</h3>
</div>
<div class="mb-4">
<label for="rate_limit">{{ $t('config.extension_setting_group_requests') }}</label>
<div class="flex items-center">
<p class="w-full text-sm">{{ $t('config.extension_setting_group_requests_help_text') }}</p>
<select
id="group_requests"
name="group_requests"
class="flex-no-shrink form-control ml-2 mr-1"
style="width: 151px;"
v-model="settings.group_requests"
>
<option :value="false">{{ $t('common.off') }}</option>
<option :value="true">{{ $t('common.on') }}</option>
</select>
</div>
</div>
<div class="mb-4">
<label for="rate_limit">{{ $t('config.extension_setting_rate_limit') }}</label>
<div class="flex items-center">
Expand Down Expand Up @@ -91,6 +107,7 @@
data () {
return {
settings: {
group_requests: false,
language: 'en',
rate_limit: 600
}
Expand Down
5 changes: 5 additions & 0 deletions resources/lang/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,11 @@
"common": {
"actions": "Actions",
"add": "Add",
"amount": "Amount",
"clear": "Clear",
"click_here": "Click Here",
"on": "On",
"off": "Off",
"queue": "Queue",
"requested_by": "Requested by",
"song": "Song",
Expand All @@ -18,6 +21,8 @@
"config": {
"extension_settings": "Extension Settings",
"extension_settings_save": "Save Settings",
"extension_setting_group_requests": "Group Requests",
"extension_setting_group_requests_help_text": "Combine requests for the same song and prioritize songs that have more requests in the queue.",
"extension_setting_language": "Extension Language",
"extension_setting_language_help_text": "This will change the primary langauge of the extension for your audience.",
"extension_setting_menu_placement": "Button and window placement",
Expand Down
5 changes: 5 additions & 0 deletions resources/lang/es.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,11 @@
"common": {
"actions": "Acciones",
"add": "Añadir",
"amount": "Cantidad",
"clear": "Borrar",
"click_here": "Haga Clic Aquí",
"on": "En",
"off": "Apagado",
"queue": "Cola",
"requested_by": "Pedido de",
"song": "Canción",
Expand All @@ -18,6 +21,8 @@
"config": {
"extension_settings": "Configuraciones de Extensión",
"extension_settings_save": "Guardar Configuraciones",
"extension_setting_group_requests": "Petición de Grupo",
"extension_setting_group_requests_help_text": "Combinar petición por los canciones mismos y prioritizar canciones con mas votos.",
"extension_setting_language": "Idioma de Extensión",
"extension_setting_language_help_text": "Este función cambia el idioma principal de la extensión por su audiencia.",
"extension_setting_menu_placement": "Posición de icono y ventana ",
Expand Down
8 changes: 6 additions & 2 deletions tailwind.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,11 @@ let colors = {
};

module.exports = {
purge: [
'./**/*.html',
'./**/*.vue',
'./**/*.jsx',
],
theme: {
borderColor: global.Object.assign({ default: colors['grey-light'] }, colors),
colors: colors,
Expand All @@ -104,6 +109,5 @@ module.exports = {
'100': 100
}
},
variants: {},
plugins: []
variants: {}
};
Loading

0 comments on commit d5b5bf6

Please sign in to comment.