package storage import ( "cwtch.im/cwtch/event" "cwtch.im/cwtch/model" "cwtch.im/cwtch/storage/v1" ) // ProfileStore is an interface to managing the storage of Cwtch Profiles type ProfileStore interface { GetProfileCopy(timeline bool) *model.Profile GetNewPeerMessage() *event.Event CheckPassword(string) bool } // CreateProfileWriterStore creates a profile store backed by a filestore listening for events and saving them // directory should be $appDir/profiles/$rand func CreateProfileWriterStore(eventManager event.Manager, directory, password string, profile *model.Profile) ProfileStore { return v1.CreateProfileWriterStore(eventManager, directory, password, profile) } // LoadProfileWriterStore loads a profile store from filestore listening for events and saving them // directory should be $appDir/profiles/$rand func LoadProfileWriterStore(eventManager event.Manager, directory, password string) (ProfileStore, error) { return v1.LoadProfileWriterStore(eventManager, directory, password) } // ReadProfile reads a profile from storage and returns the profile // Should only be called for cache refresh of the profile after a ProfileWriterStore has opened // (and upgraded) the store, and thus supplied the key/salt func ReadProfile(directory string, key [32]byte, salt [128]byte) (*model.Profile, error) { return v1.ReadProfile(directory, key, salt) } // ********* Versioning and upgrade **********