package handler import ( "m1k1o/neko/internal/types" "m1k1o/neko/internal/types/event" "m1k1o/neko/internal/types/message" "m1k1o/neko/internal/utils" ) func (h *MessageHandler) FileTransferRefresh(session types.Session) error { if !h.state.FileTransferEnabled() { return nil } fileTransferPath := h.state.FileTransferPath("") // root // allow users only if file transfer is not locked if session != nil && !(session.Admin() || !h.state.IsLocked("file_transfer")) { h.logger.Debug().Msg("file transfer is locked for users") return nil } // TODO: keep list of files in memory and update it on file changes files, err := utils.ListFiles(fileTransferPath) if err != nil { return err } message := message.FileTransferList{ Event: event.FILETRANSFER_LIST, Cwd: fileTransferPath, Files: files, } // send to just one user if session != nil { return session.Send(message) } // broadcast to all admins if h.state.IsLocked("file_transfer") { return h.sessions.AdminBroadcast(message, nil) } // broadcast to all users return h.sessions.Broadcast(message, nil) }