[MM-54591] Use getVersion endpoint to report app name (#2862)

This commit is contained in:
Devin Binnie
2023-09-29 11:16:29 -04:00
committed by GitHub
parent 2a88175b09
commit 8281bbbb37
8 changed files with 42 additions and 16 deletions

View File

@@ -4,7 +4,7 @@
'use strict'; 'use strict';
import {ipcRenderer, contextBridge, app} from 'electron'; import {ipcRenderer, contextBridge} from 'electron';
import { import {
GET_LANGUAGE_INFORMATION, GET_LANGUAGE_INFORMATION,
@@ -110,8 +110,6 @@ contextBridge.exposeInMainWorld('mas', {
}); });
contextBridge.exposeInMainWorld('desktop', { contextBridge.exposeInMainWorld('desktop', {
getAppName: () => app.name,
quit: (reason, stack) => ipcRenderer.send(QUIT, reason, stack), quit: (reason, stack) => ipcRenderer.send(QUIT, reason, stack),
openAppMenu: () => ipcRenderer.send(OPEN_APP_MENU), openAppMenu: () => ipcRenderer.send(OPEN_APP_MENU),
closeServersDropdown: () => ipcRenderer.send(CLOSE_SERVERS_DROPDOWN), closeServersDropdown: () => ipcRenderer.send(CLOSE_SERVERS_DROPDOWN),

View File

@@ -10,17 +10,24 @@ import UpdateWrapper from './Update/UpdateWrapper';
type OwnProps = { type OwnProps = {
activeItem?: DownloadedItem; activeItem?: DownloadedItem;
item: DownloadedItem; item: DownloadedItem;
appName: string;
} }
const DownloadsDropdownItem = ({item, activeItem}: OwnProps) => { const DownloadsDropdownItem = ({item, activeItem, appName}: OwnProps) => {
if (item.type === 'update' && item.state !== 'progressing') { if (item.type === 'update' && item.state !== 'progressing') {
return <UpdateWrapper item={item}/>; return (
<UpdateWrapper
item={item}
appName={appName}
/>
);
} }
return ( return (
<DownloadsDropdownItemFile <DownloadsDropdownItemFile
item={item} item={item}
activeItem={activeItem} activeItem={activeItem}
appName={appName}
/> />
); );
}; };

View File

@@ -15,9 +15,10 @@ import Thumbnail from './Thumbnail';
type OwnProps = { type OwnProps = {
activeItem?: DownloadedItem; activeItem?: DownloadedItem;
item: DownloadedItem; item: DownloadedItem;
appName: string;
} }
const DownloadsDropdownItemFile = ({item, activeItem}: OwnProps) => { const DownloadsDropdownItemFile = ({item, activeItem, appName}: OwnProps) => {
const [threeDotButtonVisible, setThreeDotButtonVisible] = useState(false); const [threeDotButtonVisible, setThreeDotButtonVisible] = useState(false);
const translate = useIntl(); const translate = useIntl();
@@ -28,7 +29,7 @@ const DownloadsDropdownItemFile = ({item, activeItem}: OwnProps) => {
}; };
const itemFilename = item.type === 'update' ? const itemFilename = item.type === 'update' ?
translate.formatMessage({id: 'renderer.downloadsDropdown.Update.MattermostVersionX', defaultMessage: `{appName} version ${item.filename}`}, {version: item.filename, appName: window.desktop.getAppName()}) : translate.formatMessage({id: 'renderer.downloadsDropdown.Update.MattermostVersionX', defaultMessage: `{appName} version ${item.filename}`}, {version: item.filename, appName}) :
item.filename; item.filename;
return ( return (

View File

@@ -12,9 +12,10 @@ import Thumbnail from '../Thumbnail';
type OwnProps = { type OwnProps = {
item: DownloadedItem; item: DownloadedItem;
appName: string;
} }
const UpdateAvailable = ({item}: OwnProps) => { const UpdateAvailable = ({item, appName}: OwnProps) => {
const onButtonClick = (e: React.MouseEvent<HTMLButtonElement>) => { const onButtonClick = (e: React.MouseEvent<HTMLButtonElement>) => {
e?.preventDefault?.(); e?.preventDefault?.();
window.desktop.downloadsDropdown.startUpdateDownload(); window.desktop.downloadsDropdown.startUpdateDownload();
@@ -36,7 +37,7 @@ const UpdateAvailable = ({item}: OwnProps) => {
defaultMessage={`A new version of the {appName} Desktop App (version ${item.filename}) is available to install.`} defaultMessage={`A new version of the {appName} Desktop App (version ${item.filename}) is available to install.`}
values={{ values={{
version: item.filename, version: item.filename,
appName: window.desktop.getAppName(), appName,
}} }}
/> />
</div> </div>

View File

@@ -15,9 +15,10 @@ import FileSizeAndStatus from '../FileSizeAndStatus';
type OwnProps = { type OwnProps = {
item: DownloadedItem; item: DownloadedItem;
appName: string;
} }
const UpdateAvailable = ({item}: OwnProps) => { const UpdateAvailable = ({item, appName}: OwnProps) => {
const translate = useIntl(); const translate = useIntl();
const onButtonClick = (e: React.MouseEvent<HTMLButtonElement>) => { const onButtonClick = (e: React.MouseEvent<HTMLButtonElement>) => {
@@ -31,7 +32,7 @@ const UpdateAvailable = ({item}: OwnProps) => {
<Thumbnail item={item}/> <Thumbnail item={item}/>
<div className='DownloadsDropdown__File__Body__Details'> <div className='DownloadsDropdown__File__Body__Details'>
<div className='DownloadsDropdown__File__Body__Details__Filename'> <div className='DownloadsDropdown__File__Body__Details__Filename'>
{translate.formatMessage({id: 'renderer.downloadsDropdown.Update.MattermostVersionX', defaultMessage: `{appName} version ${item.filename}`}, {version: item.filename, appName: window.desktop.getAppName()})} {translate.formatMessage({id: 'renderer.downloadsDropdown.Update.MattermostVersionX', defaultMessage: `{appName} version ${item.filename}`}, {version: item.filename, appName})}
</div> </div>
<div <div
className={classNames('DownloadsDropdown__File__Body__Details__FileSizeAndStatus', { className={classNames('DownloadsDropdown__File__Body__Details__FileSizeAndStatus', {

View File

@@ -11,14 +11,25 @@ import 'renderer/css/components/Button.scss';
type OwnProps = { type OwnProps = {
item: DownloadedItem; item: DownloadedItem;
appName: string;
} }
const UpdateWrapper = ({item}: OwnProps) => { const UpdateWrapper = ({item, appName}: OwnProps) => {
if (item.state === 'available') { if (item.state === 'available') {
return <UpdateAvailable item={item}/>; return (
<UpdateAvailable
item={item}
appName={appName}
/>
);
} }
if (item.state === 'completed') { if (item.state === 'completed') {
return <UpdateDownloaded item={item}/>; return (
<UpdateDownloaded
item={item}
appName={appName}
/>
);
} }
return null; return null;
}; };

View File

@@ -18,6 +18,7 @@ type State = {
darkMode?: boolean; darkMode?: boolean;
windowBounds?: Electron.Rectangle; windowBounds?: Electron.Rectangle;
item?: DownloadedItem; item?: DownloadedItem;
appName?: string;
} }
class DownloadsDropdown extends React.PureComponent<Record<string, never>, State> { class DownloadsDropdown extends React.PureComponent<Record<string, never>, State> {
@@ -40,6 +41,9 @@ class DownloadsDropdown extends React.PureComponent<Record<string, never>, State
window.desktop.downloadsDropdown.focus(); window.desktop.downloadsDropdown.focus();
}); });
window.desktop.getVersion().then(({name}) => {
this.setState({appName: name});
});
window.desktop.downloadsDropdown.requestInfo(); window.desktop.downloadsDropdown.requestInfo();
} }
@@ -81,6 +85,10 @@ class DownloadsDropdown extends React.PureComponent<Record<string, never>, State
} }
render() { render() {
if (!this.state.appName) {
return null;
}
return ( return (
<IntlProvider> <IntlProvider>
<div <div
@@ -115,6 +123,7 @@ class DownloadsDropdown extends React.PureComponent<Record<string, never>, State
item={downloadItem} item={downloadItem}
key={downloadItem.filename} key={downloadItem.filename}
activeItem={this.state.item} activeItem={this.state.item}
appName={this.state.appName || ''}
/> />
); );
})} })}

View File

@@ -31,8 +31,6 @@ declare global {
getThumbnailLocation: (location: string) => Promise<string>; getThumbnailLocation: (location: string) => Promise<string>;
}; };
desktop: { desktop: {
getAppName: () => string;
quit: (reason: string, stack: string) => void; quit: (reason: string, stack: string) => void;
openAppMenu: () => void; openAppMenu: () => void;
closeServersDropdown: () => void; closeServersDropdown: () => void;