67 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			67 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import React, { useEffect, useState } from 'react';
 | |
| import { ServerContext } from '@/state/server';
 | |
| import TitledGreyBox from '@/components/elements/TitledGreyBox';
 | |
| import reinstallServer from '@/api/server/reinstallServer';
 | |
| import { Actions, useStoreActions } from 'easy-peasy';
 | |
| import { ApplicationStore } from '@/state';
 | |
| import { httpErrorToHuman } from '@/api/http';
 | |
| import tw from 'twin.macro';
 | |
| import { Button } from '@/components/elements/button/index';
 | |
| import { Dialog } from '@/components/elements/dialog';
 | |
| 
 | |
| export default () => {
 | |
|     const uuid = ServerContext.useStoreState((state) => state.server.data!.uuid);
 | |
|     const [modalVisible, setModalVisible] = useState(false);
 | |
|     const { addFlash, clearFlashes } = useStoreActions((actions: Actions<ApplicationStore>) => actions.flashes);
 | |
| 
 | |
|     const reinstall = () => {
 | |
|         clearFlashes('settings');
 | |
|         reinstallServer(uuid)
 | |
|             .then(() => {
 | |
|                 addFlash({
 | |
|                     key: 'settings',
 | |
|                     type: 'success',
 | |
|                     message: 'Your server has begun the reinstallation process.',
 | |
|                 });
 | |
|             })
 | |
|             .catch((error) => {
 | |
|                 console.error(error);
 | |
| 
 | |
|                 addFlash({ key: 'settings', type: 'error', message: httpErrorToHuman(error) });
 | |
|             })
 | |
|             .then(() => setModalVisible(false));
 | |
|     };
 | |
| 
 | |
|     useEffect(() => {
 | |
|         clearFlashes();
 | |
|     }, []);
 | |
| 
 | |
|     return (
 | |
|         <TitledGreyBox title={'Reinstall Server'} css={tw`relative`}>
 | |
|             <Dialog.Confirm
 | |
|                 open={modalVisible}
 | |
|                 title={'Confirm server reinstallation'}
 | |
|                 confirm={'Yes, reinstall server'}
 | |
|                 onClose={() => setModalVisible(false)}
 | |
|                 onConfirmed={reinstall}
 | |
|             >
 | |
|                 Your server will be stopped and some files may be deleted or modified during this process, are you sure
 | |
|                 you wish to continue?
 | |
|             </Dialog.Confirm>
 | |
|             <p css={tw`text-sm`}>
 | |
|                 Reinstalling your server will stop it, and then re-run the installation script that initially set it
 | |
|                 up. 
 | |
|                 <strong css={tw`font-medium`}>
 | |
|                     Some files may be deleted or modified during this process, please back up your data before
 | |
|                     continuing.
 | |
|                 </strong>
 | |
|             </p>
 | |
|             <div css={tw`mt-6 text-right`}>
 | |
|                 <Button.Danger variant={Button.Variants.Secondary} onClick={() => setModalVisible(true)}>
 | |
|                     Reinstall Server
 | |
|                 </Button.Danger>
 | |
|             </div>
 | |
|         </TitledGreyBox>
 | |
|     );
 | |
| };
 | 
