| 581 | } |
| 582 | |
| 583 | func (v *Vault) SetSettings(next VaultSettings) (VaultSettings, error) { |
| 584 | fallbackPrimary := v.inferPrimaryNotesLocation() |
| 585 | normalized := normalizeVaultSettings(next, fallbackPrimary) |
| 586 | if err := os.MkdirAll(filepath.Dir(v.settingsPath()), v.dirMode); err != nil { |
| 587 | return VaultSettings{}, err |
| 588 | } |
| 589 | data, err := json.MarshalIndent(normalized, "", " ") |
| 590 | if err != nil { |
| 591 | return VaultSettings{}, err |
| 592 | } |
| 593 | if err := os.WriteFile(v.settingsPath(), data, v.fileMode); err != nil { |
| 594 | return VaultSettings{}, err |
| 595 | } |
| 596 | if normalized.PrimaryNotesLocation == PrimaryNotesInbox { |
| 597 | if err := os.MkdirAll(filepath.Join(v.root, string(FolderInbox)), v.dirMode); err != nil { |
| 598 | return VaultSettings{}, err |
| 599 | } |
| 600 | } |
| 601 | v.invalidateTextSearchCache() |
| 602 | return cloneSettings(normalized), nil |
| 603 | } |
| 604 | |
| 605 | func (v *Vault) primaryNotesRoot() (string, error) { |
| 606 | settings, err := v.GetSettings() |