package loader import ( "errors" "fmt" mc "galaxy/model/client" ) func (l *loader) loadCurrentState() (*mc.State, bool, error) { stateExists, err := l.storage.StateExists() if err != nil { return nil, false, fmt.Errorf("State file lookup error: %w", err) } if !stateExists { return nil, false, nil } if s, err := l.storage.LoadState(); err != nil { return nil, false, fmt.Errorf("State read error: %w", err) } else { return &s, true, nil } } func (l *loader) updateCurrentVersion(v string) error { state, stateExists, err := l.loadCurrentState() if err != nil { return fmt.Errorf("Load State error: %w", err) } if !stateExists { state = &mc.State{} } if state.ClientCurrentVersion == v { return nil } state.ClientCurrentVersion = v if err := l.storage.SaveState(*state); err != nil { return fmt.Errorf("State write error: %w", err) } return nil } func (l *loader) setNextVersion(v *string) error { state, stateExists, err := l.loadCurrentState() if err != nil { return fmt.Errorf("Load State error: %w", err) } if !stateExists { return errors.New("State was never saved, unable to set next version") } if state.ClientNextVersion != nil && v != nil && *state.ClientNextVersion == *v { return nil } if state.ClientNextVersion == v { return nil } state.ClientNextVersion = v if err := l.storage.SaveState(*state); err != nil { return fmt.Errorf("State write error: %w", err) } return nil }