cloud.go 1004 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. package app
  2. import "fyne.io/fyne/v2"
  3. func (a *fyneApp) SetCloudProvider(p fyne.CloudProvider) {
  4. if p == nil {
  5. a.cloud = nil
  6. return
  7. }
  8. a.transitionCloud(p)
  9. }
  10. func (a *fyneApp) transitionCloud(p fyne.CloudProvider) {
  11. if a.cloud != nil {
  12. a.cloud.Cleanup(a)
  13. }
  14. err := p.Setup(a)
  15. if err != nil {
  16. fyne.LogError("Failed to set up cloud provider "+p.ProviderName(), err)
  17. return
  18. }
  19. a.cloud = p
  20. listeners := a.prefs.ChangeListeners()
  21. if pp, ok := p.(fyne.CloudProviderPreferences); ok {
  22. a.prefs = pp.CloudPreferences(a)
  23. } else {
  24. a.prefs = a.newDefaultPreferences()
  25. }
  26. if cloud, ok := p.(fyne.CloudProviderStorage); ok {
  27. a.storage = cloud.CloudStorage(a)
  28. } else {
  29. store := &store{a: a}
  30. store.Docs = makeStoreDocs(a.uniqueID, store)
  31. a.storage = store
  32. }
  33. for _, l := range listeners {
  34. a.prefs.AddChangeListener(l)
  35. l() // assume that preferences have changed because we replaced the provider
  36. }
  37. // after transition ensure settings listener is fired
  38. a.settings.apply()
  39. }