Skip to content

Commit 76fb8ed

Browse files
address review comments
1 parent 108e724 commit 76fb8ed

8 files changed

Lines changed: 35 additions & 22 deletions

File tree

auth/authentication.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ func (a *Auth) handleClient(checks ...func(*model.Client) (authState, error)) fu
155155
if strings.HasPrefix(token, enhancedTokenPrefix) {
156156
complexToken, err := ParseEnhancedToken(token)
157157
if err != nil || !complexToken.ValidateTimestamp(timeNow().Unix()) {
158-
return authStateSkip, err
158+
return authStateSkip, nil
159159
}
160160
token = complexToken.PublicForm()
161161
}
@@ -197,7 +197,7 @@ func (a *Auth) handleApplication(ctx *gin.Context) (authState, error) {
197197
if strings.HasPrefix(token, enhancedTokenPrefix) {
198198
complexToken, err := ParseEnhancedToken(token)
199199
if err != nil || !complexToken.ValidateTimestamp(timeNow().Unix()) {
200-
return authStateSkip, err
200+
return authStateSkip, nil
201201
}
202202
token = complexToken.PublicForm()
203203
}

auth/token_test.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package auth
33
import (
44
"crypto/rand"
55
"errors"
6-
"log"
76
"testing"
87
"testing/iotest"
98

@@ -12,7 +11,6 @@ import (
1211

1312
func TestNewComplexToken(t *testing.T) {
1413
token := NewEnhancedToken("A12")
15-
log.Printf("token: %s", token.String())
1614
canonicalizedExpected := token.PublicForm()
1715
tokenParsed, err := ParseEnhancedToken(token.String())
1816
assert.NoError(t, err)

router/router_test.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import (
44
"bytes"
55
"encoding/json"
66
"fmt"
7-
"log"
87
"net/http"
98
"net/http/httptest"
109
"strings"
@@ -322,7 +321,6 @@ func (s *IntegrationSuite) TestSendMessage() {
322321
token := &model.Application{}
323322
json.NewDecoder(res.Body).Decode(token)
324323
assert.Equal(s.T(), "backup-server", token.Name)
325-
log.Printf("token: %s", token.Token)
326324

327325
req = s.newRequest("POST", "message", `{"message": "backup done", "title": "backup done"}`)
328326
req.Header.Add("X-Gotify-Key", token.Token)

ui/src/application/AddApplicationDialog.tsx

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import {NumberField} from '../common/NumberField';
1010
import React, {useState} from 'react';
1111
import {Typography} from '@mui/material';
1212
import {copyToClipboard} from '../clipboard';
13+
import {useStores} from '../stores';
1314

1415
interface IProps {
1516
fClose: VoidFunction;
@@ -21,6 +22,7 @@ export const AddApplicationDialog = ({fClose, fOnSubmit}: IProps) => {
2122
const [name, setName] = useState('');
2223
const [description, setDescription] = useState('');
2324
const [defaultPriority, setDefaultPriority] = useState(0);
25+
const {snackManager} = useStores();
2426

2527
const submitEnabled = name.length !== 0;
2628
const submitAndNext = async () => {
@@ -86,7 +88,15 @@ export const AddApplicationDialog = ({fClose, fOnSubmit}: IProps) => {
8688
</DialogContent>
8789
<DialogActions>
8890
{returnToken ? (
89-
<Button onClick={() => copyToClipboard(returnToken)}>Copy to clipboard</Button>
91+
<Button
92+
onClick={() =>
93+
copyToClipboard(returnToken).then(
94+
() => snackManager.snack('Copied to clipboard'),
95+
() => snackManager.snack('Cannot access clipboard.')
96+
)
97+
}>
98+
Copy to clipboard
99+
</Button>
90100
) : (
91101
<Button onClick={fClose}>Cancel</Button>
92102
)}

ui/src/client/AddClientDialog.tsx

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import Tooltip from '@mui/material/Tooltip';
99
import {NumberField} from '../common/NumberField';
1010
import {DialogContentText, Typography} from '@mui/material';
1111
import {copyToClipboard} from '../clipboard';
12+
import {useStores} from '../stores';
1213

1314
interface IProps {
1415
fClose: VoidFunction;
@@ -19,7 +20,7 @@ const AddClientDialog = ({fClose, fOnSubmit}: IProps) => {
1920
const [returnToken, setReturnToken] = useState('');
2021
const [name, setName] = useState('');
2122
const [expiresAfter, setExpiresAfter] = useState(0);
22-
23+
const {snackManager} = useStores();
2324
const submitEnabled = name.length !== 0;
2425
const submitAndNext = async () => {
2526
const token = await fOnSubmit(name, Math.max(0, expiresAfter));
@@ -72,7 +73,15 @@ const AddClientDialog = ({fClose, fOnSubmit}: IProps) => {
7273
</DialogContent>
7374
<DialogActions>
7475
{returnToken ? (
75-
<Button onClick={() => copyToClipboard(returnToken)}>Copy to clipboard</Button>
76+
<Button
77+
onClick={() =>
78+
copyToClipboard(returnToken).then(
79+
() => snackManager.snack('Copied to clipboard'),
80+
() => snackManager.snack('Cannot access clipboard.')
81+
)
82+
}>
83+
Copy to clipboard
84+
</Button>
7685
) : (
7786
<Button onClick={fClose}>Cancel</Button>
7887
)}

ui/src/clipboard.ts

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,12 @@ export const copyToClipboard = async (value: string) => {
22
try {
33
await navigator.clipboard.writeText(value);
44
} catch (error) {
5-
console.error('Failed to copy to clipboard:', error);
6-
try {
7-
const elem = document.createElement('textarea');
8-
elem.value = value;
9-
document.body.appendChild(elem);
10-
elem.select();
11-
document.execCommand('copy');
12-
document.body.removeChild(elem);
13-
} catch (error) {
14-
console.error('Failed to copy to clipboard (fallback):', error);
15-
}
5+
console.warn('Failed to copy to clipboard using Clipboard API:', error);
6+
const elem = document.createElement('textarea');
7+
elem.value = value;
8+
document.body.appendChild(elem);
9+
elem.select();
10+
document.execCommand('copy');
11+
document.body.removeChild(elem);
1612
}
1713
};

ui/src/common/CopyableSecret.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,10 @@ const CopyableSecret = ({value, style}: IProps) => {
2121
<div style={style}>
2222
<IconButton
2323
onClick={() =>
24-
copyToClipboard(value).finally(() => snackManager.snack('Copied to clipboard'))
24+
copyToClipboard(value).then(
25+
() => snackManager.snack('Copied to clipboard'),
26+
() => snackManager.snack('Cannot access clipboard.')
27+
)
2528
}
2629
title="Copy to clipboard"
2730
size="large">

ui/src/tests/setup.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,6 @@ export const newTest = async (
7373
const browser = await puppeteer.launch({
7474
headless: process.env.CI === 'true',
7575
args: [`--window-size=1920,1080`, '--no-sandbox'],
76-
executablePath: '/usr/bin/chromium',
7776
});
7877
const page = await browser.newPage();
7978
await page.setViewport({width: 1920, height: 1080});

0 commit comments

Comments
 (0)