Adds a HTML5 video player when it senses a video file.
// ==UserScript==
// @name Add video player to Slack
// @namespace http://tech.velmont.net
// @version 0.1
// @description Adds a HTML5 video player when it senses a video file.
// @author Odin Hørthe Omdal
// @match http://*.slack.com/*
// @match https://*.slack.com/*
// @run-at document-end
// @grant none
// ==/UserScript==
function addVideoTags() {
let files = Array.from(document.querySelectorAll('.file_container > a:not(.checked-for-video)'))
files.forEach(anchorElement => {
/* Only check once */
anchorElement.classList.add('checked-for-video');
if (!anchorElement.href.match(/(webm|ogv|ogg|mp4)$/i)) {
/* Probably not a video file */
return;
}
if (anchorElement.parentElement.querySelector('video')) {
/* Already have video added */
return;
}
let v = document.createElement('video');
v.src = anchorElement.href;
v.controls = true;
v.style.maxWidth='100%';
v.style.maxHeight = '100%';
anchorElement.parentElement.appendChild(v);
});
}
$(function() {
$('#msgs_div').on('DOMSubtreeModified propertychange', addVideoTags);
});