nextjs-redirect-locale
Version:
Redirect to corresponding locale route
53 lines (43 loc) • 2.88 kB
JavaScript
"use strict";const _jsxFileName = "src/index.tsx";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _react = require('react'); var _react2 = _interopRequireDefault(_react);
var _router = require('next/router'); var _router2 = _interopRequireDefault(_router);
var _head = require('next/head'); var _head2 = _interopRequireDefault(_head);
var _locales = require('./locales');
exports. default = (locales) =>
class extends _react2.default.Component {
static async getInitialProps({ req, res }) {
if (_optionalChain([res, 'optionalAccess', _ => _.writeHead])) {
const locale = _locales.localeFromRequest.call(void 0, req, locales)
const url = '/' + locale
res.writeHead(302, { Location: url })
res.end()
return {}
}
return {}
}
componentDidMount() {
const locale = _locales.localeFromBrowser.call(void 0, locales)
const url = '/' + locale
this.setState({ url })
}
render() {
if (!_optionalChain([this, 'access', _2 => _2.state, 'optionalAccess', _3 => _3.url])) {
return _react2.default.createElement('div', {__self: this, __source: {fileName: _jsxFileName, lineNumber: 30}} )
}
const { url } = this.state
_router2.default.push(url)
return (
_react2.default.createElement(_react2.default.Fragment, null
, _react2.default.createElement(_head2.default, {__self: this, __source: {fileName: _jsxFileName, lineNumber: 39}}
/* Redirects with meta refresh if no JavaScript support */
, _react2.default.createElement('noscript', {__self: this, __source: {fileName: _jsxFileName, lineNumber: 41}}
, _react2.default.createElement('meta', { httpEquiv: "refresh", content: `0;url=${url}`, __self: this, __source: {fileName: _jsxFileName, lineNumber: 42}} )
)
)
/* Provides a redirect link if no meta refresh support */
, _react2.default.createElement('p', {__self: this, __source: {fileName: _jsxFileName, lineNumber: 46}}, "Redirecting to "
, _react2.default.createElement('a', { href: url, __self: this, __source: {fileName: _jsxFileName, lineNumber: 47}}, url), "…"
)
)
)
}
}