Skip to content
This repository was archived by the owner on Dec 26, 2022. It is now read-only.

Commit e69cda5

Browse files
authored
Merge pull request #5 from Yadro/feature-v1.0.3
Feature v1.0.3
2 parents 2072a9c + 39ad3cb commit e69cda5

File tree

17 files changed

+94
-28
lines changed

17 files changed

+94
-28
lines changed

.env.example

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
SENTRY_DSN='https://XXXX.ingest.sentry.io/00000000'
2-
GA_UACODE=UA-XXXXXXXXXX
3-
# DEBUG=universal-analytics
2+
GA_UACODE=UA-XXXXXXXXX-X
3+
# DEBUG=universal-analytics # do not use DEBUG, because `debug` package will override this var.
4+
# But dotenv-webpack plugin will replace it by string and parse by Terser will fail.
45
# NODE_DEBUG=request # debug requests in analytics
6+
# DEBUG_PROD=true

.erb/configs/webpack.config.main.prod.babel.js

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,18 +10,23 @@ import { BundleAnalyzerPlugin } from 'webpack-bundle-analyzer';
1010
import baseConfig from './webpack.config.base';
1111
import CheckNodeEnv from '../scripts/CheckNodeEnv';
1212
import DeleteSourceMaps from '../scripts/DeleteSourceMaps';
13+
import Dotenv from 'dotenv-webpack';
1314

1415
CheckNodeEnv('production');
1516
DeleteSourceMaps();
1617

17-
const devtoolsConfig = process.env.DEBUG_PROD === 'true' ? {
18-
devtool: 'source-map'
19-
} : {};
18+
const devtoolsConfig =
19+
process.env.DEBUG_PROD === 'true'
20+
? {
21+
devtool: 'source-map',
22+
}
23+
: {};
2024

2125
export default merge(baseConfig, {
2226
...devtoolsConfig,
2327

2428
mode: 'production',
29+
// devtool: 'source-map',
2530

2631
target: 'electron-main',
2732

@@ -37,7 +42,7 @@ export default merge(baseConfig, {
3742
new TerserPlugin({
3843
parallel: true,
3944
}),
40-
]
45+
],
4146
},
4247

4348
plugins: [
@@ -61,6 +66,11 @@ export default merge(baseConfig, {
6166
DEBUG_PROD: false,
6267
START_MINIMIZED: false,
6368
}),
69+
70+
new Dotenv({
71+
path: path.join(__dirname, '../../.env'),
72+
systemvars: true,
73+
}),
6474
],
6575

6676
/**

.erb/configs/webpack.config.renderer.dev.babel.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import webpack from 'webpack';
44
import chalk from 'chalk';
55
import { merge } from 'webpack-merge';
66
import { spawn, execSync } from 'child_process';
7+
import Dotenv from 'dotenv-webpack';
78
import baseConfig from './webpack.config.base';
89
import CheckNodeEnv from '../scripts/CheckNodeEnv';
910
import ReactRefreshWebpackPlugin from '@pmmmwh/react-refresh-webpack-plugin';
@@ -257,6 +258,11 @@ export default merge(baseConfig, {
257258
NODE_ENV: 'development',
258259
}),
259260

261+
new Dotenv({
262+
path: path.join(__dirname, '../../.env'),
263+
systemvars: true,
264+
}),
265+
260266
new webpack.LoaderOptionsPlugin({
261267
debug: true,
262268
}),

.erb/configs/webpack.config.renderer.dev.dll.babel.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import webpack from 'webpack';
66
import path from 'path';
77
import { merge } from 'webpack-merge';
8+
import Dotenv from 'dotenv-webpack';
89
import baseConfig from './webpack.config.base';
910
import { dependencies } from '../../package.json';
1011
import CheckNodeEnv from '../scripts/CheckNodeEnv';
@@ -59,6 +60,11 @@ export default merge(baseConfig, {
5960
NODE_ENV: 'development',
6061
}),
6162

63+
new Dotenv({
64+
path: path.join(__dirname, '../../.env'),
65+
systemvars: true,
66+
}),
67+
6268
new webpack.LoaderOptionsPlugin({
6369
debug: true,
6470
options: {

.erb/configs/webpack.config.renderer.prod.babel.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import { BundleAnalyzerPlugin } from 'webpack-bundle-analyzer';
99
import CssMinimizerPlugin from 'css-minimizer-webpack-plugin';
1010
import { merge } from 'webpack-merge';
1111
import TerserPlugin from 'terser-webpack-plugin';
12+
import Dotenv from 'dotenv-webpack';
1213
import baseConfig from './webpack.config.base';
1314
import CheckNodeEnv from '../scripts/CheckNodeEnv';
1415
import DeleteSourceMaps from '../scripts/DeleteSourceMaps';
@@ -170,6 +171,11 @@ export default merge(baseConfig, {
170171
DEBUG_PROD: false,
171172
}),
172173

174+
new Dotenv({
175+
path: path.join(__dirname, '../../.env'),
176+
systemvars: true,
177+
}),
178+
173179
new MiniCssExtractPlugin({
174180
filename: 'style.css',
175181
}),

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,7 @@
158158
"css-loader": "^5.0.1",
159159
"css-minimizer-webpack-plugin": "^2.0.0",
160160
"detect-port": "^1.3.0",
161+
"dotenv-webpack": "^7.0.3",
161162
"electron": "^12.0.2",
162163
"electron-builder": "^22.11.7",
163164
"electron-devtools-installer": "git+https://github.com/MarshallOfSound/electron-devtools-installer.git",
@@ -205,7 +206,6 @@
205206
"caniuse-lite": "1.0.30001214",
206207
"clsx": "^1.1.1",
207208
"date-fns": "2.20.1",
208-
"dotenv": "10.0.0",
209209
"electron-debug": "^3.1.0",
210210
"electron-log": "^4.2.4",
211211
"electron-updater": "^4.3.4",

src/base/repositories/AbstractFileRepository.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,10 @@ const path = require('path');
44
import FsHelper from '../../helpers/FsHelper';
55
import PromiseQueue from '../../helpers/PromiseQueueHellper';
66

7-
const APP_DIR = 'YadroTimeTracker';
7+
const APP_DIR =
8+
process.env.NODE_ENV === 'development'
9+
? 'YadroTimeTracker_test'
10+
: 'YadroTimeTracker';
811

912
export default abstract class AbstractFileRepository<T = any> {
1013
dirWithProfileData: string = 'profile1';
@@ -39,7 +42,7 @@ export default abstract class AbstractFileRepository<T = any> {
3942
}
4043

4144
public restore(defaultValue: T): T {
42-
console.log(`${this.logPrefix} restore`);
45+
console.log(`${this.logPrefix} restore ${this.filePath}`);
4346
if (fs.existsSync(this.filePath)) {
4447
const data = fs.readFileSync(this.filePath, { encoding: 'utf-8' });
4548
// TODO handle parse error. Backup file with issues and return defaultValue

src/components/SettingsModal/SettingsModal.tsx

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import React, { useCallback, useState } from 'react';
22
import {
3+
Button,
34
Checkbox,
45
Divider,
56
Form,
@@ -11,6 +12,7 @@ import {
1112
import { CheckboxChangeEvent } from 'antd/lib/checkbox';
1213
import { SaveOutlined } from '@ant-design/icons';
1314
import { observer } from 'mobx-react';
15+
import * as Sentry from '@sentry/browser';
1416
// eslint-disable-next-line import/named
1517
import moment, { Moment } from 'moment';
1618

@@ -117,6 +119,17 @@ const SettingsModal: React.VFC<ISettingsModalProps> = observer(
117119
onChange={handleChangeNotifications}
118120
/>
119121
</Form.Item>
122+
{process.env.DEBUG_PROD === 'true' && (
123+
<Button
124+
onClick={() => {
125+
const message = `${process.env.NODE_ENV} exception ${Date.now()}`;
126+
Sentry.captureException(new Error(message));
127+
console.log('Sentry.captureException', message);
128+
}}
129+
>
130+
Test Sentry
131+
</Button>
132+
)}
120133
</Modal>
121134
);
122135
}

src/hooks/TaskHooks.ts

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { calcDuration, calcDurationGaps, msToTime } from '../helpers/DateTime';
55
import TaskModel, { ITimeRangeModel } from '../modules/tasks/models/TaskModel';
66
import TaskTimeItemModel from '../modules/tasks/models/TaskTimeItemModel';
77

8-
export function useTaskDuration(model: TaskModel | undefined) {
8+
export function useTaskDuration(model?: TaskModel, showZero?: boolean) {
99
const intervalRef = useRef<NodeJS.Timeout>();
1010
const [duration, setDuration] = useState<string>('');
1111

@@ -14,9 +14,12 @@ export function useTaskDuration(model: TaskModel | undefined) {
1414
return;
1515
}
1616
const duration = model.duration;
17-
if (duration !== 0) {
18-
setDuration(msToTime(duration, model.active));
19-
}
17+
18+
const durationMs =
19+
duration !== 0 || showZero ? msToTime(duration, model.active) : '';
20+
21+
setDuration(durationMs);
22+
2023
if (model.active) {
2124
intervalRef.current = setInterval(() => {
2225
setDuration(msToTime(model?.duration || 0));
@@ -39,12 +42,12 @@ export function useTimeItemsDuration(taskTime: TaskTimeItemModel[]) {
3942

4043
const calcTaskDuration = useCallback(
4144
() => calcDuration(taskTime.map((t) => t.time)),
42-
[taskTime],
45+
[taskTime]
4346
);
4447

4548
const calcTaskGapsDuration = useCallback(
4649
() => calcDurationGaps(taskTime.map((t) => t.time)),
47-
[taskTime],
50+
[taskTime]
4851
);
4952

5053
const setTimes = useCallback(() => {
@@ -78,7 +81,7 @@ export function useTimeRangeDuration(timeRange: ITimeRangeModel | undefined) {
7881

7982
const calcTimeRangeDuration = useCallback(
8083
() => msToTime(timeRange ? calcDuration([timeRange]) : 0),
81-
[timeRange],
84+
[timeRange]
8285
);
8386

8487
useEffect(() => {
@@ -104,7 +107,7 @@ export function useTimeRangeDuration(timeRange: ITimeRangeModel | undefined) {
104107
}
105108

106109
export function useStartWorkingTime(
107-
timeItems: TaskTimeItemModel[],
110+
timeItems: TaskTimeItemModel[]
108111
): Date | undefined {
109112
return useMemo(() => {
110113
let minTime: Date | undefined;

src/main.dev.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,20 +8,18 @@
88
* When running `yarn build` or `yarn build:main`, this file is compiled to
99
* `./src/main.prod.js` using webpack. This gives us some performance wins.
1010
*/
11+
import log from 'electron-log';
12+
Object.assign(console, log.functions);
1113
import 'core-js/stable';
1214
import 'regenerator-runtime/runtime';
13-
import dotenv from 'dotenv';
1415
import path from 'path';
1516
import { app, BrowserWindow, shell } from 'electron';
1617
import { autoUpdater } from 'electron-updater';
17-
import log from 'electron-log';
1818
import Badge from 'electron-windows-badge';
1919

2020
import MenuBuilder from './menu';
2121
import { initSentry } from './shared/initSentry';
2222

23-
dotenv.config();
24-
2523
initSentry();
2624

2725
console.log('Working path:', app.getAppPath());

0 commit comments

Comments
 (0)