Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
import Api from '@/utils/api';
import {IStorage} from '@/types/types';
import loggerFactory from '@/utils/loggerFactory';
import sessionHolder from '@/utils/sessionHolder';
import {Logger} from 'lines-logger';
import {WS_API_URL} from '@/utils/consts';
import NotifierHandler from '@/utils/NotificationHandler';
import Vue from 'vue';
import Http from '@/utils/Http';
import WebRtcApi from '@/webrtc/WebRtcApi';
import {store} from '@/utils/storeHolder';
export const xhr: Http = /* window.fetch ? new Fetch(XHR_API_URL, sessionHolder) :*/ new Xhr(sessionHolder);
export const api: Api = new Api(xhr);
export const isMobile: boolean = mobile.isMobile();
export const messageBus = new Vue();
export const browserVersion: string = (function () {
let ua = navigator.userAgent, tem,
M = ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) || [];
if (/trident/i.test(M[1])) {
tem = /\brv[ :]+(\d+)/g.exec(ua) || [];
return 'IE ' + (tem[1] || '');
}
if (M[1] === 'Chrome') {
tem = ua.match(/\b(OPR|Edge)\/(\d+)/);
if (tem != undefined) { return tem.slice(1).join(' ').replace('OPR', 'Opera'); }
}
M = M[2] ? [M[1], M[2]] : [navigator.appName, navigator.appVersion, '-?'];
if ((tem = ua.match(/version\/(\d+)/i)) != undefined) { M.splice(1, 1, tem[1]); }
import { detect } from 'detect-browser'
import detectMobile from 'is-mobile'
/**
* Application Constants
* @ignore
*/
export const isElectron = navigator.userAgent.indexOf( 'Electron' ) > -1
export const isDev = process.env.NODE_ENV !== 'production'
export const browser = detect()
export const isMac = browser.os === 'Mac OS'
export const isMobile = detectMobile()
export const isTablet = detectMobile( { tablet: true } )
export const isDesktop = !( isMobile || isTablet )
// The user is considered idle after 3 seconds
export const IDLE_TIMEOUT = 1000 * 3
/* Backend Info */
// eslint-disable-next-line no-undef
export const BACKEND_HOST = window.location.hostname || 'localhost'
export const BACKEND_PORT = !isDev ? 1699 : 42425
export const BACKEND_URL = `http://${BACKEND_HOST}:${BACKEND_PORT}`
export const WS_URL = `ws://${BACKEND_HOST}:${BACKEND_PORT}`
/* Sentry Data Source Name */
export const SENTRY_DSN = 'https://51b714c1e7544cba86efb2cad85152ff@sentry.io/1363390'
export const SENTRY_PROJECT = 'desktop-frontend'
constructor(props) {
super()
this.state = {
filters: props.filters,
totalStaked: 0,
inApplication: 0,
inCommit: 0,
inReveal: 0,
inRegistry: 0,
withdrawn: 0,
rejected: 0,
fetching: false,
showFilters: !isMobile(),
toggle: true
}
this.onSearchInput = this.onSearchInput.bind(this)
this.onFilterChange = this.onFilterChange.bind(this)
this.onFiltersChange = props.onFiltersChange.bind(this)
this.resetFilters = this.resetFilters.bind(this)
// this.fetchStats()
}
async function init() {
let hasAcceptedMobile
try {
hasAcceptedMobile = store.get('hasAcceptedMobile')
} catch (error) {
console.log(error)
}
if (isMobile() && !hasAcceptedMobile && !window.web3) {
ReactDOM.render(, document.getElementById('root'))
return
}
try {
await Promise.all([
getPermissions(),
registry.init(),
plcr.init(),
parameterizer.init(),
token.init()
])
} catch (error) {
console.error(error)
}
private playVideo(media: Media) {
if (!this.videoElement) {
console.warn('playVideo called before videoElement initialised');
return;
}
if (this.initialised) {
return;
} else {
this.initialised = true;
}
const autoPlay = !isMobile() && this.config && this.config.user.autoplayEnabled;
const lowQualityOnSeek =
this.config &&
(isMobile()
? this.config.user.lowQualityOnLoadEnabledForMobile
: this.config.user.lowQualityOnLoadEnabled);
console.debug('playing video', media.hash, lowQualityOnSeek, autoPlay);
this.hls = new Hls({
autoStartLoad: false,
capLevelToPlayerSize: true,
maxSeekHole: 5,
maxBufferHole: 5,
maxBufferLength: 20,
startLevel: lowQualityOnSeek ? 0 : -1,
});
this.syncVolume();
this.hls.on(Hls.Events.MANIFEST_PARSED, (event, data) => {
private playVideo(media: Media) {
if (!this.videoElement) {
console.warn('playVideo called before videoElement initialised');
return;
}
if (this.initialised) {
return;
} else {
this.initialised = true;
}
const autoPlay = !isMobile() && this.config && this.config.user.autoplayEnabled;
const lowQualityOnSeek =
this.config &&
(isMobile()
? this.config.user.lowQualityOnLoadEnabledForMobile
: this.config.user.lowQualityOnLoadEnabled);
console.debug('playing video', media.hash, lowQualityOnSeek, autoPlay);
this.hls = new Hls({
autoStartLoad: false,
capLevelToPlayerSize: true,
maxSeekHole: 5,
maxBufferHole: 5,
maxBufferLength: 20,
startLevel: lowQualityOnSeek ? 0 : -1,
});
const start = ascending ? min : max;
const end = ascending ? max + 1 : min - 1;
return range(start, end).map(year => {
const yearStr = String(year);
return (
<option value="{yearStr}">
{yearStr}
</option>
);
});
};
const currYear = new Date().getFullYear();
const renderNativeInput = isMobile({ tablet: true });
const customValueToString = ({ month, year }: MonthPickerValue) =>
month && year ? `${year}-${month < 10 ? '0' : ''}${month}` : undefined;
const stringToCustomValue = (value: string) => {
const [year, month] = value.split('-');
return {
month: parseInt(month, 10),
year: parseInt(year, 10),
};
};
const makeChangeHandler = <
Element extends HTMLSelectElement | HTMLInputElement
>(
export default props => {
if (!isMobile(navigator.userAgent)) {
ReactDOM.render(
,
node,
);
}
};
const update = () => {
const { filenameSelector, iconSelector, host } = getSelector(
window.location.hostname
);
const isMobile = mobile();
const isGitHub = host === 'github';
const filenameDoms = select.all(filenameSelector);
const iconDoms = select.all(iconSelector);
const filenameDomsLength = filenameDoms.length;
for (let i = 0; i < filenameDomsLength; i += 1) {
const filename =
isGitHub && isMobile
? getGitHubMobileFilename(filenameDoms[i])
: filenameDoms[i].innerText.trim();
const iconDom = isGitHub
? iconDoms[i].querySelector('.octicon')
: iconDoms[i];
import Download from 'react-icons/lib/fa/cloud-download'
import LoadIcon from 'react-icons/lib/fa/spinner'
import LoopIcon from 'react-icons/lib/md/repeat-one'
import RepeatIcon from 'react-icons/lib/md/repeat'
import ShufflePlayIcon from 'react-icons/lib/ti/arrow-shuffle'
import OrderPlayIcon from 'react-icons/lib/md/view-headline'
import PlayLists from 'react-icons/lib/md/queue-music'
import NextAudioIcon from 'react-icons/lib/md/skip-next'
import PrevAudioIcon from 'react-icons/lib/md/skip-previous'
import CloseBtn from 'react-icons/lib/md/close'
import DeleteIcon from 'react-icons/lib/fa/trash-o'
import 'rc-slider/assets/index.css'
import 'rc-switch/assets/index.css'
const IS_MOBILE = isMobile()
export const AnimatePlayIcon = () => (
)
export const AnimatePauseIcon = () => (
)
export const Load = () => (
<span>
</span>
)
export const PlayModel = ({ visible, value }) => (