diff --git a/build/icons/nethlink-icon-desktop.icns b/build/icons/icon.icns similarity index 100% rename from build/icons/nethlink-icon-desktop.icns rename to build/icons/icon.icns diff --git a/build/icons/nethlink-icon-desktop.ico b/build/icons/icon.ico similarity index 100% rename from build/icons/nethlink-icon-desktop.ico rename to build/icons/icon.ico diff --git a/build/icons/512x512.png b/build/icons/icon512x512.png similarity index 100% rename from build/icons/512x512.png rename to build/icons/icon512x512.png diff --git a/electron-builder.yml b/electron-builder.yml index d665d188..8fa54f13 100644 --- a/electron-builder.yml +++ b/electron-builder.yml @@ -21,8 +21,7 @@ files: asarUnpack: - public/** win: - # Vedere come fare dopo aver ottenuto le icone nel giusto formato - icon: icons/nethlink-icon-desktop.ico + icon: icons/icon.ico target: - nsis #- zip @@ -39,8 +38,8 @@ nsis: shortcutName: ${productName} uninstallDisplayName: ${productName}-${version} mac: - # Vedere come fare dopo aver ottenuto le icone nel giusto formato - icon: icons/nethlink-icon-desktop.icns + #icon: icons/icon.icns + icon: icons/icon512x512.png #identity: 11AF607C955FB944DB9DDF31AE651B4CB39EBCA9 category: public.app-category.productivity gatekeeperAssess: false @@ -60,8 +59,7 @@ mac: - dmg #- mas linux: - # Vedere come fare dopo aver ottenuto le icone nel giusto formato - icon: icons/512x512.png + icon: icons/icon512x512.png target: #- snap - AppImage diff --git a/package-lock.json b/package-lock.json index 95361e9c..94c29ee7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "nethlink", - "version": "0.0.59", + "version": "0.0.60", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "nethlink", - "version": "0.0.59", + "version": "0.0.60", "hasInstallScript": true, "license": "UNLICENSED", "devDependencies": { diff --git a/package.json b/package.json index 07d08f21..8546a922 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "nethlink", - "version": "0.0.59", + "version": "0.0.60", "description": "Neth Connector app", "main": "./out/main/main.js", "license": "UNLICENSED", diff --git a/public/TrayToolbarIcon.png b/public/TrayToolbarIcon.png deleted file mode 100644 index a9843f5f..00000000 Binary files a/public/TrayToolbarIcon.png and /dev/null differ diff --git a/public/TrayToolbarIcon20x20.png b/public/TrayToolbarIcon20x20.png new file mode 100644 index 00000000..d8fe6b50 Binary files /dev/null and b/public/TrayToolbarIcon20x20.png differ diff --git a/src/main/classes/controllers/TrayController.ts b/src/main/classes/controllers/TrayController.ts index 4a9ad5cd..27eb68de 100644 --- a/src/main/classes/controllers/TrayController.ts +++ b/src/main/classes/controllers/TrayController.ts @@ -14,7 +14,7 @@ export class TrayController { constructor() { TrayController.instance = this - this.tray = new Tray(join(__dirname, '../../public/TrayToolbarIcon.png')) + this.tray = new Tray(join(__dirname, '../../public/TrayToolbarIcon20x20.png')) this.tray.setIgnoreDoubleClickEvents(true) this.tray.on('click', () => { if (this.enableClick) { diff --git a/src/renderer/src/assets/TrayLogo.svg b/src/renderer/src/assets/TrayLogo.svg deleted file mode 100644 index d301df97..00000000 --- a/src/renderer/src/assets/TrayLogo.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/src/renderer/src/assets/TrayNotificationIcon.svg b/src/renderer/src/assets/TrayNotificationIcon.svg new file mode 100644 index 00000000..50e0cc8d --- /dev/null +++ b/src/renderer/src/assets/TrayNotificationIcon.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/renderer/src/components/AddToPhonebookBox.tsx b/src/renderer/src/components/AddToPhonebookBox.tsx index da9a832f..f41c59e3 100644 --- a/src/renderer/src/components/AddToPhonebookBox.tsx +++ b/src/renderer/src/components/AddToPhonebookBox.tsx @@ -1,4 +1,4 @@ -import { useState, useEffect } from 'react' +import { useState, useEffect, useRef } from 'react' import { Button, TextInput } from './Nethesis' import { FontAwesomeIcon } from '@fortawesome/react-fontawesome' import { faSpinner as LoadingIcon } from '@fortawesome/free-solid-svg-icons' @@ -7,6 +7,7 @@ import { useForm, SubmitHandler } from 'react-hook-form' import { t } from 'i18next' import * as z from 'zod' import { zodResolver } from '@hookform/resolvers/zod' +import { validatePhoneNumber } from '@renderer/utils' export interface AddToPhonebookBoxProps { searchText?: string @@ -23,11 +24,12 @@ export function AddToPhonebookBox({ onCancel, handleAddContactToPhonebook }: AddToPhonebookBoxProps) { + const submitButtonRef = useRef(null) const baseSchema = z.object({ privacy: z.string(), - extension: z.string(), - workphone: z.string(), - cellphone: z.string(), + extension: z.string().trim().regex(/^[0-9*#+]*$/, 'This is not a phone number'), + workphone: z.string().trim().regex(/^[0-9*#+]*$/, 'This is not a phone number'), + cellphone: z.string().trim().regex(/^[0-9*#+]*$/, 'This is not a phone number'), workemail: z.string(), notes: z.string() }) @@ -89,17 +91,13 @@ export function AddToPhonebookBox({ handleSave(data) } - function containsOnlyNumber(text: string) { - return /^\d+$/.test(text) - } - useEffect(() => { reset() setValue('privacy', 'public') setValue('type', 'person') if (searchText !== undefined) { - if (containsOnlyNumber(searchText)) { + if (validatePhoneNumber(searchText)) { setValue('extension', searchText) } else { setValue('name', searchText) @@ -117,19 +115,22 @@ export function AddToPhonebookBox({ function handleSave(data: ContactType) { //NETHVOICE usa il valore '-' quando si inserisce una company che e' priva di nome //data.name === '' puo' essere vera solo nel caso in cui si inserisce una company - if (watchType === 'company') { - data.name = '-' - } - setIsLoading(true) - handleAddContactToPhonebook(data) - .catch((error) => { - //TODO: gestione errore inserimento - console.error(error) - }) - .finally(() => { - setIsLoading(false) - reset() - }) + setIsLoading(true); + //Aggiunto un timeout per fare vedere lo spinner in quanto la chiamata e' troppo veloce + setTimeout(() => { + if (watchType === 'company') { + data.name = '-' + } + handleAddContactToPhonebook(data) + .catch((error) => { + //TODO: gestione errore inserimento + console.error(error) + }) + .finally(() => { + setIsLoading(false) + reset() + }) + }, 300); } return ( @@ -231,6 +232,7 @@ export function AddToPhonebookBox({ onKeyDown={(e) => { if (e.key === 'Enter') { e.preventDefault() + submitButtonRef.current?.focus() handleSubmit(onSubmitForm)(e) } }} @@ -247,6 +249,7 @@ export function AddToPhonebookBox({ onKeyDown={(e) => { if (e.key === 'Enter') { e.preventDefault() + submitButtonRef.current?.focus() handleSubmit(onSubmitForm)(e) } }} @@ -257,13 +260,16 @@ export function AddToPhonebookBox({ {...register('extension')} type="tel" minLength={3} - onChange={(e) => { - setValue('extension', e.target.value.replace(/\D/g, '')) - }} + // onChange={(e) => { + // setValue('extension', e.target.value.replace(/[^\d*#+]/g, '')) + // }} label={t('Phonebook.Phone number') as string} + helper={errors.extension?.message || undefined} + error={!!errors.extension?.message} onKeyDown={(e) => { if (e.key === 'Enter') { e.preventDefault() + submitButtonRef.current?.focus() handleSubmit(onSubmitForm)(e) } }} @@ -274,13 +280,16 @@ export function AddToPhonebookBox({ {...register('workphone')} type="tel" minLength={3} - onChange={(e) => { - setValue('workphone', e.target.value.replace(/\D/g, '')) - }} + // onChange={(e) => { + // setValue('workphone', e.target.value.replace(/[^\d*#+]/g, '')) + // }} label={t('Phonebook.Work phone') as string} + helper={errors.workphone?.message || undefined} + error={!!errors.workphone?.message} onKeyDown={(e) => { if (e.key === 'Enter') { e.preventDefault() + submitButtonRef.current?.focus() handleSubmit(onSubmitForm)(e) } }} @@ -291,13 +300,16 @@ export function AddToPhonebookBox({ {...register('cellphone')} type="tel" minLength={3} - onChange={(e) => { - setValue('cellphone', e.target.value.replace(/\D/g, '')) - }} + // onChange={(e) => { + // setValue('cellphone', e.target.value.replace(/[^\d*#+]/g, '')) + // }} label={t('Phonebook.Mobile phone') as string} + helper={errors.cellphone?.message || undefined} + error={!!errors.cellphone?.message} onKeyDown={(e) => { if (e.key === 'Enter') { e.preventDefault() + submitButtonRef.current?.focus() handleSubmit(onSubmitForm)(e) } }} @@ -311,6 +323,7 @@ export function AddToPhonebookBox({ onKeyDown={(e) => { if (e.key === 'Enter') { e.preventDefault() + submitButtonRef.current?.focus() handleSubmit(onSubmitForm)(e) } }} @@ -324,6 +337,7 @@ export function AddToPhonebookBox({ onKeyDown={(e) => { if (e.key === 'Enter') { e.preventDefault() + submitButtonRef.current?.focus() handleSubmit(onSubmitForm)(e) } }} @@ -334,6 +348,7 @@ export function AddToPhonebookBox({