Files
Signal-Desktop/js/react/util/index.ts
Scott Nonnenberg be91a89d68 Parse theme from querystring, put on util. Moment from require()
We also fully set up i18n and put it on util as well as making
it available on windows.i18n for Backbone views.
2018-04-05 08:31:43 -07:00

83 lines
2.0 KiB
TypeScript

import qs from 'qs';
import moment from 'moment';
// Helper components used in the styleguide, exposed at 'util' in the global scope via the
// context option in react-styleguidist.
export { MessageParents } from './MessageParents';
export { BackboneWrapper } from './BackboneWrapper';
// Here we can make things inside Webpack available to Backbone views like preload.js.
import React from 'react';
import ReactDOM from 'react-dom';
import { Message } from '../conversation/Message';
import { Reply } from '../conversation/Reply';
// TypeScript wants two things when you import:
// 1) a normal typescript file
// 2) a javascript file with type definiitions
// Anything else will raise an error, that it can't find the module. And so, we ignore...
// @ts-ignore
import gif from '../../../fixtures/giphy-GVNvOUpeYmI7e.gif';
// @ts-ignore
import mp3 from '../../../fixtures/incompetech-com-Agnus-Dei-X.mp3';
// @ts-ignore
import txt from '../../../fixtures/lorem-ipsum.txt';
// @ts-ignore
import mp4 from '../../../fixtures/pixabay-Soap-Bubble-7141.mp4';
export {
mp3,
gif,
mp4,
txt,
};
// Required, or TypeScript complains about adding keys to window
const parent = window as any;
const query = window.location.search.replace(/^\?/, '');
const urlOptions = qs.parse(query);
const theme = urlOptions.theme || 'android';
const locale = urlOptions.locale || 'en';
// @ts-ignore
import localeMessages from '../../../_locales/en/messages.json';
// @ts-ignore
import { setup } from '../../i18n';
const i18n = setup(locale, localeMessages);
export {
theme,
locale,
i18n,
};
parent.i18n = i18n;
parent.moment = moment;
parent.moment.updateLocale(locale, {
relativeTime: {
h: parent.i18n('timestamp_h'),
m: parent.i18n('timestamp_m'),
s: parent.i18n('timestamp_s'),
},
});
parent.moment.locale(locale);
parent.React = React;
parent.ReactDOM = ReactDOM;
const SignalReact = parent.Signal.React = parent.Signal.React || {};
SignalReact.Message = Message;
SignalReact.Reply = Reply;