NewManager created a Manager from configurations.
(db Database, directory string, mux *gin.RouterGroup, notifier Notifier)
| 55 | |
| 56 | // NewManager created a Manager from configurations. |
| 57 | func NewManager(db Database, directory string, mux *gin.RouterGroup, notifier Notifier) (*Manager, error) { |
| 58 | manager := &Manager{ |
| 59 | mutex: &sync.RWMutex{}, |
| 60 | instances: map[uint]compat.PluginInstance{}, |
| 61 | plugins: map[string]compat.Plugin{}, |
| 62 | messages: make(chan MessageWithUserID), |
| 63 | db: db, |
| 64 | mux: mux, |
| 65 | } |
| 66 | |
| 67 | go func() { |
| 68 | for { |
| 69 | message := <-manager.messages |
| 70 | internalMsg := &model.Message{ |
| 71 | ApplicationID: message.Message.ApplicationID, |
| 72 | Title: message.Message.Title, |
| 73 | Priority: *message.Message.Priority, |
| 74 | Date: message.Message.Date, |
| 75 | Message: message.Message.Message, |
| 76 | } |
| 77 | if message.Message.Extras != nil { |
| 78 | internalMsg.Extras, _ = json.Marshal(message.Message.Extras) |
| 79 | } |
| 80 | db.CreateMessage(internalMsg) |
| 81 | message.Message.ID = internalMsg.ID |
| 82 | notifier.Notify(message.UserID, &message.Message) |
| 83 | } |
| 84 | }() |
| 85 | |
| 86 | if err := manager.loadPlugins(directory); err != nil { |
| 87 | return nil, err |
| 88 | } |
| 89 | |
| 90 | users, err := manager.db.GetUsers() |
| 91 | if err != nil { |
| 92 | return nil, err |
| 93 | } |
| 94 | for _, user := range users { |
| 95 | if err := manager.initializeForUser(*user); err != nil { |
| 96 | return nil, err |
| 97 | } |
| 98 | } |
| 99 | |
| 100 | return manager, nil |
| 101 | } |
| 102 | |
| 103 | // ErrAlreadyEnabledOrDisabled is returned on SetPluginEnabled call when a plugin is already enabled or disabled. |
| 104 | var ErrAlreadyEnabledOrDisabled = errors.New("config is already enabled/disabled") |
searching dependent graphs…