- // ==UserScript==
- // @name InstaSynchP Event Hooks
- // @namespace InstaSynchP
- // @description Add hooks to the events on the InstaSynch page
-
- // @version 1
- // @author Zod-
- // @source https://github.com/Zod-/InstaSynchP-Event-Hooks
- // @license GPL-3.0
-
- // @include http://*.instasynch.com/*
- // @include http://instasynch.com/*
- // @include http://*.instasync.com/*
- // @include http://instasync.com/*
- // @grant none
- // @run-at document-start
-
- // @require https://greasyfork.org/scripts/2857-jquery-bind-first/code/jquerybind-first.js
- // @require https://greasyfork.org/scripts/5647-instasynchp-library/code/InstaSynchP%20Library.js
- // ==/UserScript==
-
- function Plugin() {
- "use strict";
- this.version = 1;
- }
-
- function ref() {
- return window.plugins.eventBase;
- }
-
- Plugin.prototype.executeOnceCore = function () {
- "use strict";
-
- var oldSendCmd = window.global.sendcmd,
- oldOnConnecting = window.global.onConnecting,
- oldOnConnected = window.global.onConnected,
- oldOnJoining = window.global.onJoining,
- oldOnJoined = window.global.onJoined,
- oldLoadRoomObj = window.global.loadRoomObj,
- oldOnReconnecting = window.global.onReconnecting,
- oldOnReconnect = window.global.onReconnect,
- oldReconnectFailed = window.global.reconnectFailed,
- oldOnError = window.global.onError,
- oldOnDisconnect = window.global.onDisconnect,
- oldRequestPartialPage = window.global.requestPartialPage,
- oldAddMessage = window.addMessage,
- oldAddUser = window.addUser,
- oldRemoveUser = window.removeUser,
- oldMakeLeader = window.makeLeader,
- oldRenameUser = window.renameUser,
- oldAddVideo = window.addVideo,
- oldRemoveVideo = window.removeVideo,
- oldMoveVideo = window.moveVideo,
- oldPlayVideo = window.playVideo,
- oldResume = window.resume,
- oldPause = window.pause,
- oldSeekTo = window.seekTo,
- oldPurge = window.purge,
- oldSkips = window.skips,
- oldLoadPlaylist = window.loadPlaylist,
- oldLoadUserlist = window.loadUserlist,
- oldCreatePoll = window.createPoll,
- oldAddPollVote = window.addPollVote,
- oldRemovePollVote = window.removePollVote,
- oldEndPoll = window.endPoll;
-
- function fireOverwrittenEvent(name, old, args) {
- events.fire(name, args, true);
- old.apply(undefined, args);
- events.fire(name, args, false);
- }
- window.global.sendcmd = function () {
- fireOverwrittenEvent('SendCmd', oldSendCmd, arguments);
- };
- window.global.onConnecting = function () {
- fireOverwrittenEvent('Connecting', oldOnConnecting, arguments);
- };
- window.global.onConnected = function () {
- fireOverwrittenEvent('Connected', oldOnConnected, arguments);
- };
- window.global.onJoining = function () {
- fireOverwrittenEvent('Joining', oldOnJoining, arguments);
- };
- window.global.onJoined = function () {
- fireOverwrittenEvent('Joined', oldOnJoined, arguments);
- };
- window.global.loadRoomObj = function () {
- var args = [].slice.call(arguments);
- args.push(window.global.page); //page
- fireOverwrittenEvent('LoadRoom', oldLoadRoomObj, args);
- };
- window.global.onReconnecting = function () {
- fireOverwrittenEvent('Reconnecting', oldOnReconnecting, arguments);
- };
- window.global.onReconnect = function () {
- fireOverwrittenEvent('Reconnect', oldOnReconnect, arguments);
- };
- window.global.reconnectFailed = function () {
- fireOverwrittenEvent('ReconnectFailed', oldReconnectFailed, arguments);
- };
- window.global.onError = function () {
- fireOverwrittenEvent('OnError', oldOnError, arguments);
- };
- window.global.onDisconnect = function () {
- fireOverwrittenEvent('Disconnect', oldOnDisconnect, arguments);
- };
- window.global.requestPartialPage = function () {
- fireOverwrittenEvent('RequestPartialPage', oldRequestPartialPage, arguments);
- };
- window.addMessage = function () {
- fireOverwrittenEvent('AddMessage', oldAddMessage, arguments);
- };
- window.addUser = function () {
- fireOverwrittenEvent('AddUser', oldAddUser, arguments);
- };
- window.removeUser = function () {
- var args = [].slice.call(arguments);
- args.push(findUserId(args[0])); //user
- fireOverwrittenEvent('RemoveUser', oldRemoveUser, args);
- };
- window.makeLeader = function () {
- fireOverwrittenEvent('MakeLeader', oldMakeLeader, arguments);
- };
- window.renameUser = function () {
- fireOverwrittenEvent('RenameUser', oldRenameUser, arguments);
- };
- window.addVideo = function () {
- fireOverwrittenEvent('AddVideo', oldAddVideo, arguments);
- };
- window.removeVideo = function () {
- var indexOfVid = window.getVideoIndex(arguments[0].info),
- video = window.playlist[indexOfVid],
- args = [].slice.call(arguments);
- args.push(video);
- args.push(indexOfVid);
- fireOverwrittenEvent('RemoveVideo', oldRemoveVideo, args);
- };
- window.moveVideo = function () {
- var args = [].slice.call(arguments);
- args.push(window.getVideoIndex(args[0]).info); //old position
- fireOverwrittenEvent('MoveVideo', oldMoveVideo, args);
- };
- window.playVideo = function () {
- fireOverwrittenEvent('PlayVideo', oldPlayVideo, arguments);
- };
- window.resume = function () {
- fireOverwrittenEvent('Resume', oldResume, arguments);
- };
- window.pause = function () {
- fireOverwrittenEvent('Pause', oldPause, arguments);
- };
- window.seekTo = function () {
- fireOverwrittenEvent('SeekTo', oldSeekTo, arguments);
- };
- window.purge = function () {
- fireOverwrittenEvent('Purge', oldPurge, arguments);
- };
- window.skips = function () {
- fireOverwrittenEvent('Skips', oldSkips, arguments);
- };
- window.loadPlaylist = function () {
- fireOverwrittenEvent('LoadPlaylist', oldLoadPlaylist, arguments);
- };
- window.loadUserlist = function () {
- fireOverwrittenEvent('LoadUserlist', oldLoadUserlist, arguments);
- };
- window.createPoll = function () {
- fireOverwrittenEvent('CreatePoll', oldCreatePoll, arguments);
- };
- window.addPollVote = function () {
- fireOverwrittenEvent('AddPollVote', oldAddPollVote, arguments);
- };
- window.removePollVote = function () {
- fireOverwrittenEvent('RemovePollVote', oldRemovePollVote, arguments);
- };
- window.endPoll = function () {
- fireOverwrittenEvent('EndPoll', oldEndPoll, arguments);
- };
- window.addEventListener("message", function (event) {
- try {
- var parsed = JSON.parse(event.data);
- if (parsed.action) {
- //own events
- events.fire(parsed.action, [parsed.data], false);
- }
- //all
- events.fire('onPageMessage', [parsed], false);
- } catch (ignore) {}
- }, false);
- };
-
- Plugin.prototype.preConnect = function () {
- "use strict";
- var oldPlayerDestroy = window.video.destroy;
- $("#chat input").bindFirst('keypress', function (event) {
- events.fire('InputKeypress[{0}]'.format(event.keyCode), [event, $("#chat input").val()], false);
- if (event.keyCode === 13 && $("#chat input").val() !== '') {
- events.fire('SendChat', [event, $("#chat input").val()], false);
- }
- });
- $("#chat input").bindFirst('keydown', function (event) {
- events.fire('InputKeydown[{0}]'.format(event.keyCode), [event, $("#chat input").val()], false);
- });
- $("#chat input").bindFirst('keyup', function (event) {
- events.fire('InputKeyup[{0}]'.format(event.keyCode), [event, $("#chat input").val()], false);
- });
- window.video.destroy = function () {
- events.fire('PlayerDestroy', [], true);
- oldPlayerDestroy();
- events.fire('PlayerDestroy', [], false);
- };
- };
-
-
- window.plugins = window.plugins || {};
- window.plugins.eventBase = new Plugin();