config.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. package main
  2. import (
  3. "encoding/json"
  4. "os"
  5. "github.com/rivo/tview"
  6. )
  7. type config struct {
  8. Token string `json:"token"`
  9. Mouse bool `json:"mouse"`
  10. Notifications bool `json:"notifications"`
  11. UserAgent string `json:"userAgent"`
  12. GetMessagesLimit int `json:"getMessagesLimit"`
  13. Theme tview.Theme `json:"theme"`
  14. }
  15. func loadConfig() *config {
  16. u, err := os.UserHomeDir()
  17. if err != nil {
  18. panic(err)
  19. }
  20. configPath := u + "/.config/discordo/config.json"
  21. if _, err := os.Stat(configPath); os.IsNotExist(err) {
  22. f, err := os.Create(configPath)
  23. if err != nil {
  24. panic(err)
  25. }
  26. c := config{
  27. Mouse: true,
  28. Notifications: true,
  29. UserAgent: "" +
  30. "Mozilla/5.0 (X11; Linux x86_64) " +
  31. "AppleWebKit/537.36 (KHTML, like Gecko) " +
  32. "Chrome/92.0.4515.131 Safari/537.36",
  33. GetMessagesLimit: 50,
  34. Theme: tview.Styles,
  35. }
  36. d, err := json.MarshalIndent(c, "", "\t")
  37. if err != nil {
  38. panic(err)
  39. }
  40. _, err = f.Write(d)
  41. if err != nil {
  42. panic(err)
  43. }
  44. f.Sync()
  45. }
  46. d, err := os.ReadFile(configPath)
  47. if err != nil {
  48. panic(err)
  49. }
  50. var c config
  51. if err = json.Unmarshal(d, &c); err != nil {
  52. panic(err)
  53. }
  54. return &c
  55. }