Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: check nintendont version and display notif #226

Merged
merged 4 commits into from
Aug 30, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions src/console/mirrorManager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,7 @@ export class MirrorManager extends EventEmitter {
ip: config.ipAddress,
info: {
nickname: details.consoleNick,
nintendontVersion: details.version,
},
});
});
Expand Down Expand Up @@ -197,6 +198,7 @@ export class MirrorManager extends EventEmitter {
status: ConnectionStatus.DISCONNECTED,
isMirroring: false,
filename: null,
nintendontVersion: null,
},
});
}
Expand Down
1 change: 1 addition & 0 deletions src/console/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ export interface ConsoleMirrorStatusUpdate {
isMirroring: boolean;
filename: string | null;
nickname: string;
nintendontVersion: string | null;
}

export interface MirrorConfig {
Expand Down
39 changes: 39 additions & 0 deletions src/renderer/containers/Console/SavedConnectionItem.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,14 @@ import CardHeader from "@material-ui/core/CardHeader";
import IconButton from "@material-ui/core/IconButton";
import Tooltip from "@material-ui/core/Tooltip";
import MoreVertIcon from "@material-ui/icons/MoreVert";
import WarningIcon from "@material-ui/icons/Warning";
import { StoredConnection } from "@settings/types";
import { ConnectionStatus, Ports } from "@slippi/slippi-js";
import React from "react";
import { useToasts } from "react-toast-notifications";
import { lt } from "semver";

import { ExternalLink as A } from "@/components/ExternalLink";
import { LabelledText } from "@/components/LabelledText";
import { connectToConsole, disconnectFromConsole, startConsoleMirror } from "@/lib/consoleConnection";
import { ReactComponent as WiiIcon } from "@/styles/images/wii-icon.svg";
Expand All @@ -26,6 +29,7 @@ export interface SavedConnectionItemProps {
isMirroring: boolean;
nickname?: string;
currentFilename: string | null;
nintendontVersion: string | null;
connection: StoredConnection;
onOpenMenu: (index: number, element: HTMLElement) => void;
}
Expand All @@ -39,6 +43,7 @@ export const SavedConnectionItem: React.FC<SavedConnectionItemProps> = ({
nickname,
isAvailable,
currentFilename,
nintendontVersion,
}) => {
const { addToast } = useToasts();
const onConnect = () => connectToConsole(connection);
Expand All @@ -53,6 +58,7 @@ export const SavedConnectionItem: React.FC<SavedConnectionItemProps> = ({
const statusName = status === ConnectionStatus.DISCONNECTED && isAvailable ? "Available" : renderStatusName(status);
const isConnected = status !== ConnectionStatus.DISCONNECTED;
const title = nickname ? `${connection.ipAddress} (${nickname})` : connection.ipAddress;
const nintendontIsOutdated = nintendontVersion !== null && lt(nintendontVersion, "1.9.1");
return (
<Outer>
<CardHeader
Expand All @@ -77,6 +83,7 @@ export const SavedConnectionItem: React.FC<SavedConnectionItemProps> = ({
}
`}
>
{nintendontIsOutdated && <OutdatedNintendontWarning />}
<div
css={css`
display: flex;
Expand Down Expand Up @@ -159,3 +166,35 @@ const renderStatusName = (status: number) => {
return `Unknown status: ${status}`;
}
};

const OutdatedNintendontWarning: React.FC = () => {
return (
<div
css={css`
display: flex;
align-items: center;
padding: 5px 10px;
background-color: #f2d994;
color: #8d571a;
border: solid 2px #8d571a;
border-radius: 10px;
font-size: 14px;
font-weight: 500;
svg {
padding: 5px;
margin-right: 5px;
}
margin-bottom: 20px;
a {
text-decoration: underline;
}
`}
>
<WarningIcon />
<span>
Your Nintendont is out of date and no longer supported. Download the latest version from{" "}
<A href="https://slippi.gg/downloads">the Slippi website</A>.
</span>
</div>
);
};
1 change: 1 addition & 0 deletions src/renderer/containers/Console/SavedConnectionsList.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@ export const SavedConnectionsList: React.FC<SavedConnectionsListProps> = ({ avai
isMirroring={isMirroring ?? false}
isAvailable={Boolean(consoleInfo)}
currentFilename={consoleStatus?.filename ?? null}
nintendontVersion={consoleStatus?.nintendontVersion ?? null}
nickname={consoleStatus?.nickname ?? consoleInfo?.name}
connection={conn}
index={index}
Expand Down
5 changes: 4 additions & 1 deletion src/renderer/lib/hooks/useConsoleDiscovery.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,13 @@ export const useConsoleDiscoveryStore = create(
draft.connectedConsoles[ip].status = info.status ?? existing?.status;
draft.connectedConsoles[ip].isMirroring = info.isMirroring ?? existing?.isMirroring;

// This value can be null so check against undefined
// These values can be null so check against undefined
if (info.filename !== undefined) {
draft.connectedConsoles[ip].filename = info.filename;
}
if (info.nintendontVersion !== undefined) {
draft.connectedConsoles[ip].nintendontVersion = info.nintendontVersion;
}
}),
),
}),
Expand Down