-
Notifications
You must be signed in to change notification settings - Fork 0
/
MMM-SpotifyControl.js
103 lines (82 loc) · 2.46 KB
/
MMM-SpotifyControl.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
'use strict';
Module.register('MMM-SpotifyControl', {
// default values
defaults: {
// Module misc
name: 'MMM-SpotifyControl',
hidden: true,
// user definable
deviceId: null, // your mirror deviceID get it from : https://developer.spotify.com/console/get-users-available-devices/
},
start: function () {
Log.info('Starting module: ' + this.name );
this.initialized = false;
this.context = {};
this.startFetchingLoop();
},
getDom: function () {
let domBuilder = new NPOS_DomBuilder(this.config, this.file(''));
if (this.initialized) {
return domBuilder.getDom(this.context);
} else {
return domBuilder.getInitDom(this.translate('LOADING'));
}
},
getScripts: function () {
return [
this.file('core/NPOS_DomBuilder.js'),
'moment.js'
];
},
notificationReceived: function(notification, payload, sender) {
// console.log(this.name + " received a module notification: " + notification + " from sender: " + sender.name);
switch(notification) {
case 'PLAY_SPOTIFY':
payload["deviceId"] = this.config.deviceId;
this.sendSocketNotification('PLAY_SPOTIFY', payload);
break;
case 'PLAY_NEXT_SPOTIFY':
// payload["deviceId"] = this.config.deviceId;
this.sendSocketNotification('PLAY_NEXT_SPOTIFY', payload);
break;
case 'PLAY_PREVIOUS_SPOTIFY':
// payload["deviceId"] = this.config.deviceId;
this.sendSocketNotification('PLAY_PREVIOUS_SPOTIFY', payload);
break;
case 'PAUSE_SPOTIFY':
// payload["deviceId"] = this.config.deviceId;
this.sendSocketNotification('PAUSE_SPOTIFY', payload);
break;
case 'RESUME_SPOTIFY':
// payload["deviceId"] = this.config.deviceId;
this.sendSocketNotification('RESUME_SPOTIFY', payload);
break;
case 'SHUFFLE':
//todo
break;
case 'REPEAT':
//todo
break;
case 'SEEK':
//todo
break;
case 'SET_VOLUME':
//todo
break;
}
},
startFetchingLoop() {
// start immediately ...
let credentials = {
clientID: this.config.clientID,
clientSecret: this.config.clientSecret,
accessToken: this.config.accessToken,
refreshToken: this.config.refreshToken
};
this.sendSocketNotification('CONNECT_TO_SPOTIFY', credentials);
// ... and then repeat in the given interval
setInterval(() => {
// this.sendSocketNotification('UPDATE_CURRENT_SONG');
}, this.config.updatesEvery * 1000);
}
});