Skip to content
Open
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
59 changes: 36 additions & 23 deletions src/features/device/Device.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@ import {
selectRebooting,
} from "./deviceSlice";

import { selectUpdate } from "../packages/packagesSlice";

export default function Device({
adbDetection,
error,
Expand All @@ -33,6 +35,7 @@ export default function Device({

const isRebooting = useSelector(selectRebooting);
const adbConnectionFailed = useSelector(selectAdbDetectionFailed);
const update = useSelector(selectUpdate);

let content = (
<Stack
Expand All @@ -44,34 +47,44 @@ export default function Device({
{!window.navigator.usb &&
<Webusb />}

<AdbDetectionError />

{adbDetection &&
{(update.waitingOnPostUpdateReboot || update.postUpdateRebootDone) &&
<Alert severity="info">
<Typography>
{tc("adbCheck")}
</Typography>
</Alert>}

{!error && window.navigator.usb && !adbDetection && !adbConnectionFailed &&
<Alert severity="warning">
<Typography>
{t("warningConnection")}
{tc("rebooting")}
</Typography>
</Alert>}

{ error &&
<Alert severity="error">
<Typography>
{t("errorConnection")}
</Typography>
</Alert>}

{ isLinux() &&
<Udev />}

{!adbDetection && !adbConnectionFailed &&
<ConnectButton onClick={handleDeviceConnect} />}
{(!update.waitingOnPostUpdateReboot && !update.postUpdateRebootDone) &&
<>
<AdbDetectionError />

{adbDetection &&
<Alert severity="info">
<Typography>
{tc("adbCheck")}
</Typography>
</Alert>}

{!error && window.navigator.usb && !adbDetection && !adbConnectionFailed &&
<Alert severity="warning">
<Typography>
{t("warningConnection")}
</Typography>
</Alert>}

{ error &&
<Alert severity="error">
<Typography>
{t("errorConnection")}
</Typography>
</Alert>}

{ isLinux() && !update.waitingOnPostUpdateReboot &&
<Udev />}

{!adbDetection && !adbConnectionFailed &&
<ConnectButton onClick={handleDeviceConnect} />}
</>}
</Stack>
);

Expand Down
21 changes: 20 additions & 1 deletion src/features/packages/packagesSlice.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@ const initialState = {
update: {
ran: false,
success: false,
waitingOnPostUpdateReboot: false,
postUpdateRebootDone: false,
},
};

Expand Down Expand Up @@ -133,6 +135,8 @@ export const upgrade = createAsyncThunk(
let errorMessage = ["Unknown error while upgrading packages..."];
try {
await adb.upgradePackages(callback);
await adb.reboot();

return;
} catch(e) {
if(e.stdout) {
Expand Down Expand Up @@ -243,7 +247,17 @@ export const packagesSlice = createSlice({
state.error = initialState.error;
state.errors = initialState.errors;
},
reset: () => initialState,
setPostUpdateRebootDone: (state, event) => {
state.update.waitingOnPostUpdateReboot = false;
state.update.postUpdateRebootDone = true;
},
reset: (state, event) => {
state = {
...initialState,
update: state.update,
};
},
fullReset: () => initialState,
},
extraReducers: (builder) => {
builder
Expand Down Expand Up @@ -323,6 +337,8 @@ export const packagesSlice = createSlice({
state.processing = true;
state.fetchedUpgradable = false;
state.update.ran = false;
state.update.waitingOnPostUpdateReboot = false;
state.update.postUpdateRebootDone = false;
})
.addCase(upgrade.rejected, (state, action) => {
state.error = action.payload;
Expand All @@ -337,6 +353,7 @@ export const packagesSlice = createSlice({
state.processing = false;
state.update.ran = true;
state.update.success = true;
state.update.waitingOnPostUpdateReboot = true;
})
.addCase(installWTFOS.pending, (state, action) => {
state.processing = true;
Expand All @@ -355,11 +372,13 @@ export const packagesSlice = createSlice({

export const {
clearError,
fullReset,
installedFilter,
processing,
repo,
reset,
search,
setPostUpdateRebootDone,
systemFilter,
} = packagesSlice.actions;

Expand Down
12 changes: 11 additions & 1 deletion src/features/router/Adb.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,11 @@ import {
selectAdbDetectionFailed,
} from "../device/deviceSlice";

import {
selectUpdate,
setPostUpdateRebootDone,
} from "../packages/packagesSlice";

import {
selectChecked as selectCheckedMaster,
selectIsMaster,
Expand All @@ -60,6 +65,7 @@ export default function AdbRouter() {
const isMaster = useSelector(selectIsMaster);
const checkedMasterState = useSelector(selectCheckedMaster);
const adbDetectionFailed = useSelector(selectAdbDetectionFailed);
const update = useSelector(selectUpdate);

const [startupCheck, setStartupCheck] = useState(false);
const [adb, setAdb] = useState(null);
Expand Down Expand Up @@ -162,6 +168,10 @@ export default function AdbRouter() {
setAdbDetection(false);
dispatch(setAdbDetectionFailed(false));

if(update.waitingOnPostUpdateReboot) {
dispatch(setPostUpdateRebootDone());
}

return;
}

Expand All @@ -179,7 +189,7 @@ export default function AdbRouter() {
setAdbDetection(false);
dispatch(setAdbDetectionFailed(true));
navigate("/root");
}, [adbDetection, adbDetectionFailed, connectToDevice, dispatch, navigate, setAdbDetection]);
}, [adbDetection, adbDetectionFailed, connectToDevice, dispatch, navigate, setAdbDetection, update.waitingOnPostUpdateReboot]);

/**
* Auto connect to ADB device if all criteria are matched.
Expand Down
2 changes: 1 addition & 1 deletion src/features/setup/Update.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ export default function Update({ adb }) {
<Stack spacing={2}>
<PackageManagementError />

{update.ran && update.success &&
{update.ran && update.success && update.postUpdateRebootDone &&
<Alert severity="success">
{t("updateSuccess")}
</Alert>}
Expand Down
4 changes: 4 additions & 0 deletions src/utils/AdbWrapper.js
Original file line number Diff line number Diff line change
Expand Up @@ -211,6 +211,10 @@ export default class AdbWrapper {
return upgradable;
}

async reboot() {
await this.executeCommand("reboot");
}

async upgradePackages(callback) {
const output = await this.opkgQueue.add([
"upgrade",
Expand Down