Some state management fixes
This commit is contained in:
		
							
								
								
									
										32
									
								
								state.ts
									
									
									
									
									
								
							
							
						
						
									
										32
									
								
								state.ts
									
									
									
									
									
								
							@@ -7,9 +7,9 @@ import toast from 'react-hot-toast';
 | 
			
		||||
const octokit = new Octokit();
 | 
			
		||||
 | 
			
		||||
interface File {
 | 
			
		||||
  name: string,
 | 
			
		||||
  language: string,
 | 
			
		||||
  content: string
 | 
			
		||||
  name: string;
 | 
			
		||||
  language: string;
 | 
			
		||||
  content: string;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
interface IState {
 | 
			
		||||
@@ -98,11 +98,20 @@ export const updateEditorSettings = (editorSettings: IState['editorSettings']) =
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export const saveFile = (value: string) => {
 | 
			
		||||
  const editorModels = state.editorCtx?.getModels();
 | 
			
		||||
  const currentModel = editorModels?.find(editorModel => editorModel.uri.path === `/${state.files[state.active].name}`);
 | 
			
		||||
  console.log(currentModel?.getValue())
 | 
			
		||||
  if (state.files.length > 0) {
 | 
			
		||||
    console.log('häää')
 | 
			
		||||
    state.files[state.active].content = currentModel?.getValue() || '';
 | 
			
		||||
  }
 | 
			
		||||
  console.log(state.files[state.active])
 | 
			
		||||
  toast.success('Saved successfully', { position: 'bottom-center' })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export const createNewFile = (name: string) => {
 | 
			
		||||
  state.files.push({ name, language: 'c', content: "" })
 | 
			
		||||
  const emptyFile: File = { name, language: 'c', content: "" };
 | 
			
		||||
  state.files.push(emptyFile)
 | 
			
		||||
  state.active = state.files.length - 1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -135,8 +144,19 @@ export const compileCode = async (activeId: number) => {
 | 
			
		||||
    });
 | 
			
		||||
    const json = await res.json();
 | 
			
		||||
    state.compiling = false;
 | 
			
		||||
    toast.success('Compiled successfully!');
 | 
			
		||||
    console.log(json)
 | 
			
		||||
    if (!json.success) {
 | 
			
		||||
      state.logs.push({ type: 'error', message: json.message })
 | 
			
		||||
      if (json.tasks && json.tasks.length > 0) {
 | 
			
		||||
        json.tasks.forEach((task: any) => {
 | 
			
		||||
          if (!task.success) {
 | 
			
		||||
            state.logs.push({ type: 'error', message: task?.console })
 | 
			
		||||
          }
 | 
			
		||||
        })
 | 
			
		||||
      }
 | 
			
		||||
      return toast.error(`Couldn't compile!`, { position: 'bottom-center' });
 | 
			
		||||
    }
 | 
			
		||||
    state.logs.push({ type: 'log', message: 'Compiled successfully ✅' })
 | 
			
		||||
    toast.success('Compiled successfully!', { position: 'bottom-center' });
 | 
			
		||||
  } catch (err) {
 | 
			
		||||
    console.log(err)
 | 
			
		||||
    state.logs.push({ type: 'error', message: 'Error occured while compiling!' })
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user