User.kt 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. package org.mjdev.desktop.data
  2. import android.accounts.Account
  3. import android.accounts.AccountManager
  4. import android.os.Environment
  5. import okio.Path
  6. import okio.Path.Companion.toPath
  7. import org.mjdev.desktop.context.DesktopContext
  8. import org.mjdev.desktop.icons.user.AccountCircle
  9. import org.mjdev.desktop.interfaces.IDesktopContext
  10. import org.mjdev.desktop.interfaces.ITheme
  11. import org.mjdev.desktop.interfaces.IUser
  12. import org.mjdev.desktop.interfaces.IUserDirs
  13. import java.io.File
  14. class User(
  15. val account: Account? = null,
  16. ) : IUser {
  17. override val userName: String
  18. get() = account?.name ?: ""
  19. override val password: String
  20. get() = "" // todo
  21. override val uid: String
  22. get() = "" // todo
  23. override val gid: String
  24. get() = "" // todo
  25. override val description: String
  26. get() = "" // todo
  27. override val home: String
  28. get() = "/sdcard/" // todo
  29. override val shell: String
  30. get() = "" // todo
  31. override val picture: Any
  32. get() = AccountCircle // todo
  33. override val homeDir: Path
  34. get() = Environment.getExternalStorageDirectory().path.toPath()
  35. override val isLoggedIn
  36. get() = isLoggedIn(userName) // todo
  37. override val userDirs: IUserDirs
  38. get() = UserDirs(homeDir)
  39. override val config: DesktopConfig
  40. get() = DesktopConfig.load(this) // todo load
  41. override val theme: ITheme
  42. get() = ITheme.DEFAULT // Theme.load(this) // todo load
  43. override val backgrounds
  44. get() = config.desktopBackgrounds
  45. override fun toString(): String {
  46. return userName
  47. }
  48. // fun login(
  49. // context: IDesktopContext,
  50. // password: String
  51. // ): Flow<Boolean> = flow { context.login(userName, password) }
  52. companion object {
  53. val Nobody = User()
  54. val DEFAULT = Nobody
  55. fun isLoggedIn(
  56. uname: String
  57. ): Boolean = false // todo
  58. fun loadPicture(
  59. home: String,
  60. pic: String
  61. ): File? = loadPicture(File(home), pic)
  62. fun loadPicture(
  63. homeDir: File,
  64. picName: String
  65. ): File? = File(homeDir, picName).let { f ->
  66. if (f.exists()) f else null
  67. }
  68. fun allUsers(
  69. context: IDesktopContext
  70. ): List<User> = if (context is DesktopContext) {
  71. AccountManager.get(context.context).accounts.map { a ->
  72. User(a)
  73. }
  74. } else emptyList()
  75. }
  76. }