2018-10-05 03:18:34 +00:00
|
|
|
package storage
|
2018-10-06 03:50:55 +00:00
|
|
|
|
|
|
|
import (
|
2019-01-21 20:11:40 +00:00
|
|
|
"cwtch.im/cwtch/event"
|
2019-01-14 20:09:25 +00:00
|
|
|
"cwtch.im/cwtch/model"
|
2020-01-13 22:11:00 +00:00
|
|
|
"cwtch.im/cwtch/storage/v1"
|
2018-10-06 03:50:55 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
// ProfileStore is an interface to managing the storage of Cwtch Profiles
|
|
|
|
type ProfileStore interface {
|
2019-07-19 17:27:50 +00:00
|
|
|
GetProfileCopy(timeline bool) *model.Profile
|
|
|
|
GetNewPeerMessage() *event.Event
|
2021-06-14 22:42:44 +00:00
|
|
|
CheckPassword(string) bool
|
2019-01-14 20:09:25 +00:00
|
|
|
}
|
|
|
|
|
2020-01-13 22:11:00 +00:00
|
|
|
// CreateProfileWriterStore creates a profile store backed by a filestore listening for events and saving them
|
2019-01-29 20:56:59 +00:00
|
|
|
// directory should be $appDir/profiles/$rand
|
2020-01-13 22:11:00 +00:00
|
|
|
func CreateProfileWriterStore(eventManager event.Manager, directory, password string, profile *model.Profile) ProfileStore {
|
|
|
|
return v1.CreateProfileWriterStore(eventManager, directory, password, profile)
|
2019-01-14 20:09:25 +00:00
|
|
|
}
|
|
|
|
|
2020-01-13 22:11:00 +00:00
|
|
|
// LoadProfileWriterStore loads a profile store from filestore listening for events and saving them
|
2019-05-15 20:12:11 +00:00
|
|
|
// directory should be $appDir/profiles/$rand
|
2020-01-13 22:11:00 +00:00
|
|
|
func LoadProfileWriterStore(eventManager event.Manager, directory, password string) (ProfileStore, error) {
|
|
|
|
return v1.LoadProfileWriterStore(eventManager, directory, password)
|
|
|
|
}
|
2019-06-05 20:40:55 +00:00
|
|
|
|
2020-01-13 22:11:00 +00:00
|
|
|
// 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)
|
2019-05-15 20:12:11 +00:00
|
|
|
}
|
|
|
|
|
2020-01-13 22:11:00 +00:00
|
|
|
// ********* Versioning and upgrade **********
|