drop more dependencies + remove updater
parent
e667928863
commit
8965d60516
|
@ -1,47 +0,0 @@
|
|||
import React from 'react';
|
||||
import { FormattedMessage } from 'react-intl';
|
||||
import useVersion from 'hooks/useVersion';
|
||||
import styles from './UpdateNotice.module.css';
|
||||
import ButtonLayout from '../layout/ButtonLayout';
|
||||
import Button from './Button';
|
||||
import useForceUpdate from '../../hooks/useForceUpdate';
|
||||
|
||||
export default function UpdateNotice() {
|
||||
const forceUpdate = useForceUpdate();
|
||||
const { hasUpdate, checked, latest, updateCheck } = useVersion(true);
|
||||
|
||||
function handleViewClick() {
|
||||
location.href = 'https://github.com/mikecao/umami/releases';
|
||||
updateCheck();
|
||||
forceUpdate();
|
||||
}
|
||||
|
||||
function handleDismissClick() {
|
||||
updateCheck();
|
||||
forceUpdate();
|
||||
}
|
||||
|
||||
if (!hasUpdate || checked) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return (
|
||||
<div className={styles.notice}>
|
||||
<div className={styles.message}>
|
||||
<FormattedMessage
|
||||
id="message.new-version-available"
|
||||
defaultMessage="A new version of umami {version} is available!"
|
||||
values={{ version: `v${latest}` }}
|
||||
/>
|
||||
</div>
|
||||
<ButtonLayout>
|
||||
<Button size="xsmall" variant="action" onClick={handleViewClick}>
|
||||
<FormattedMessage id="label.view-details" defaultMessage="View details" />
|
||||
</Button>
|
||||
<Button size="xsmall" onClick={handleDismissClick}>
|
||||
<FormattedMessage id="label.dismiss" defaultMessage="Dismiss" />
|
||||
</Button>
|
||||
</ButtonLayout>
|
||||
</div>
|
||||
);
|
||||
}
|
|
@ -6,7 +6,6 @@ import Link from 'components/common/Link';
|
|||
import Icon from 'components/common/Icon';
|
||||
import LanguageButton from 'components/settings/LanguageButton';
|
||||
import ThemeButton from 'components/settings/ThemeButton';
|
||||
import UpdateNotice from 'components/common/UpdateNotice';
|
||||
import UserButton from 'components/settings/UserButton';
|
||||
import Logo from 'assets/logo.svg';
|
||||
import styles from './Header.module.css';
|
||||
|
@ -21,7 +20,6 @@ export default function Header() {
|
|||
|
||||
return (
|
||||
<nav className="container">
|
||||
{user?.is_admin && <UpdateNotice />}
|
||||
<div className={classNames(styles.header, 'row align-items-center')}>
|
||||
<div className={styles.nav}>
|
||||
<div className="">
|
||||
|
|
19
package.json
19
package.json
|
@ -11,16 +11,16 @@
|
|||
},
|
||||
"scripts": {
|
||||
"dev": "next dev",
|
||||
"build": "npm-run-all build-tracker build-geo build-db build-app",
|
||||
"clean": "rimraf .next",
|
||||
"build": "npm-run-all clean build-tracker build-geo build-db build-app",
|
||||
"start": "next start",
|
||||
"start-env": "node -r dotenv/config scripts/start-env.js",
|
||||
"build-app": "next build",
|
||||
"build-tracker": "rollup -c rollup.tracker.config.js",
|
||||
"build-tracker": "microbundle tracker/index.js -o public/umami.js --no-sourcemap -f cjs",
|
||||
"build-db": "npm-run-all build-db-client",
|
||||
"build-geo": "node scripts/build-geo.js",
|
||||
"build-db-schema": "dotenv prisma introspect",
|
||||
"build-db-client": "dotenv prisma generate",
|
||||
"download-country-names": "node scripts/download-country-names.js"
|
||||
"build-db-client": "dotenv prisma generate"
|
||||
},
|
||||
"dependencies": {
|
||||
"@prisma/client": "2.21.2",
|
||||
|
@ -58,7 +58,6 @@
|
|||
"redux": "4.1.0",
|
||||
"redux-thunk": "2.3.0",
|
||||
"request-ip": "2.1.3",
|
||||
"semver": "7.3.5",
|
||||
"thenby": "1.3.4",
|
||||
"timezone-support": "2.0.2",
|
||||
"tinycolor2": "1.4.2",
|
||||
|
@ -66,24 +65,18 @@
|
|||
},
|
||||
"devDependencies": {
|
||||
"@formatjs/cli": "2.13.16",
|
||||
"@rollup/plugin-buble": "0.21.3",
|
||||
"@rollup/plugin-node-resolve": "11.2.1",
|
||||
"@rollup/plugin-replace": "2.3.4",
|
||||
"@svgr/webpack": "5.5.0",
|
||||
"cross-env": "7.0.3",
|
||||
"del": "6.0.0",
|
||||
"dotenv-cli": "4.0.0",
|
||||
"extract-react-intl-messages": "4.1.1",
|
||||
"microbundle": "0.13.0",
|
||||
"npm-run-all": "4.1.5",
|
||||
"pkg": "^5.2.0",
|
||||
"postcss-flexbugs-fixes": "5.0.2",
|
||||
"postcss-import": "13.0.0",
|
||||
"postcss-preset-env": "6.7.0",
|
||||
"prettier": "2.2.1",
|
||||
"prisma": "2.21.2",
|
||||
"rollup": "2.45.2",
|
||||
"rollup-plugin-hashbang": "2.2.2",
|
||||
"rollup-plugin-terser": "7.0.2",
|
||||
"rimraf": "3.0.2",
|
||||
"tar": "6.0.5"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -7,7 +7,6 @@ import {
|
|||
THEME_CONFIG,
|
||||
VERSION_CHECK,
|
||||
} from 'lib/constants';
|
||||
import semver from 'semver';
|
||||
|
||||
const app = createSlice({
|
||||
name: 'app',
|
||||
|
@ -17,7 +16,6 @@ const app = createSlice({
|
|||
versions: {
|
||||
current: process.env.VERSION,
|
||||
latest: null,
|
||||
hasUpdate: false,
|
||||
},
|
||||
shareToken: null,
|
||||
},
|
||||
|
@ -74,13 +72,11 @@ export function checkVersion() {
|
|||
|
||||
const latest = tag_name.startsWith('v') ? tag_name.slice(1) : tag_name;
|
||||
const lastCheck = getItem(VERSION_CHECK);
|
||||
const hasUpdate = latest && semver.gt(latest, current) && lastCheck?.version !== latest;
|
||||
|
||||
return dispatch(
|
||||
setVersions({
|
||||
current,
|
||||
latest,
|
||||
hasUpdate,
|
||||
}),
|
||||
);
|
||||
};
|
||||
|
|
|
@ -1,13 +0,0 @@
|
|||
import 'dotenv/config';
|
||||
import buble from '@rollup/plugin-buble';
|
||||
import resolve from '@rollup/plugin-node-resolve';
|
||||
import { terser } from 'rollup-plugin-terser';
|
||||
|
||||
export default {
|
||||
input: 'tracker/index.js',
|
||||
output: {
|
||||
file: 'public/umami.js',
|
||||
format: 'iife',
|
||||
},
|
||||
plugins: [resolve(), buble({ objectAssign: true }), terser({ compress: { evaluate: false } })],
|
||||
};
|
|
@ -1,39 +0,0 @@
|
|||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
const https = require('https');
|
||||
const chalk = require('chalk');
|
||||
|
||||
const src = path.resolve(__dirname, '../lang');
|
||||
const dest = path.resolve(__dirname, '../public/country');
|
||||
const files = fs.readdirSync(src);
|
||||
|
||||
const getUrl = locale =>
|
||||
`https://raw.githubusercontent.com/umpirsky/country-list/master/data/${locale}/country.json`;
|
||||
|
||||
const asyncForEach = async (array, callback) => {
|
||||
for (let index = 0; index < array.length; index++) {
|
||||
await callback(array[index], index, array);
|
||||
}
|
||||
};
|
||||
|
||||
if (!fs.existsSync(dest)) {
|
||||
fs.mkdirSync(dest);
|
||||
}
|
||||
|
||||
const download = async files => {
|
||||
await asyncForEach(files, async file => {
|
||||
const locale = file.replace('-', '_').replace('.json', '');
|
||||
|
||||
const filename = path.join(dest, file);
|
||||
if (!fs.existsSync(filename)) {
|
||||
await new Promise(resolve => {
|
||||
https.get(getUrl(locale), res => {
|
||||
console.log('Downloaded', chalk.greenBright('->'), filename);
|
||||
resolve(res.pipe(fs.createWriteStream(filename)));
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
download(files);
|
|
@ -1,35 +0,0 @@
|
|||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
const del = require('del');
|
||||
const prettier = require('prettier');
|
||||
const chalk = require('chalk');
|
||||
|
||||
const src = path.resolve(__dirname, '../lang');
|
||||
const dest = path.resolve(__dirname, '../build');
|
||||
const files = fs.readdirSync(src);
|
||||
|
||||
const removed = del.sync([path.join(dest, '*.json')]);
|
||||
|
||||
if (removed.length) {
|
||||
console.log(removed.map(n => `${n} ${chalk.redBright('✗')}`).join('\n'));
|
||||
}
|
||||
|
||||
if (!fs.existsSync(dest)) {
|
||||
fs.mkdirSync(dest);
|
||||
}
|
||||
|
||||
files.forEach(file => {
|
||||
const lang = require(`../lang/${file}`);
|
||||
const keys = Object.keys(lang).sort();
|
||||
|
||||
const formatted = keys.reduce((obj, key) => {
|
||||
obj[key] = { defaultMessage: lang[key] };
|
||||
return obj;
|
||||
}, {});
|
||||
|
||||
const json = prettier.format(JSON.stringify(formatted), { parser: 'json' });
|
||||
|
||||
fs.writeFileSync(path.resolve(dest, file), json);
|
||||
|
||||
console.log(path.resolve(src, file), chalk.greenBright('->'), path.resolve(dest, file));
|
||||
});
|
Loading…
Reference in New Issue