switch to String folder names

reproducible
Zlatin Balevsky 2021-04-30 18:24:44 +01:00
parent d60c07a35c
commit f09b598b2a
No known key found for this signature in database
GPG Key ID: A72832072D525E41
4 changed files with 49 additions and 28 deletions

View File

@ -4,6 +4,6 @@ import com.muwire.core.Event
class MessageLoadedEvent extends Event {
MWMessage message
int folder
String folder
boolean unread
}

View File

@ -23,17 +23,24 @@ import net.i2p.data.Base64
@Log
class Messenger {
public final static int INBOX = 0
public final static int OUTBOX = 1
public final static int SENT = 2
public final static String INBOX = "inbox"
public final static String OUTBOX = "outbox"
public final static String SENT = "sent"
private static final Set<String> RESERVED_FOLDERS = new HashSet<>()
static {
RESERVED_FOLDERS.add(INBOX)
RESERVED_FOLDERS.add(OUTBOX)
RESERVED_FOLDERS.add(SENT)
}
private static final int MAX_IN_PROCESS = 4
private final EventBus eventBus
private final File inbox, outbox, sent
private final Map<String,File> folders = new HashMap<>()
private final I2PConnector connector
private final MuWireSettings settings
private final Map<File, Set<MWMessage>> messages = new HashMap<>()
private final Set<MWMessage> inboxMessages = new LinkedHashSet<>()
private final Set<MWMessage> outboxMessages = new LinkedHashSet<>()
private final Set<MWMessage> sentMessages = new LinkedHashSet<>()
@ -52,26 +59,32 @@ class Messenger {
private long lastSendTime
public Messenger(EventBus eventBus, File home, I2PConnector connector, MuWireSettings settings) {
Messenger(EventBus eventBus, File home, I2PConnector connector, MuWireSettings settings) {
this.eventBus = eventBus
this.connector = connector
this.settings = settings
File messages = new File(home, "messages")
inbox = new File(messages, "inbox")
outbox = new File(messages, "outbox")
sent = new File(messages, "sent")
inbox.mkdirs()
outbox.mkdirs()
sent.mkdirs()
folders.put(INBOX, new File(messages, INBOX))
folders.put(OUTBOX, new File(messages, OUTBOX))
folders.put(SENT, new File(messages, SENT))
folders.values().each {it.mkdirs()}
this.messages.put(folders[INBOX], inboxMessages)
this.messages.put(folders[OUTBOX], outboxMessages)
this.messages.put(folders[SENT], sentMessages)
}
public void onUILoadedEvent(UILoadedEvent e) {
Set<String> getFolderNames() {
folders.keySet()
}
void onUILoadedEvent(UILoadedEvent e) {
diskIO.execute({load()} as Runnable)
}
public void stop() {
void stop() {
diskIO.shutdown()
netIO.shutdown()
timer.cancel()
@ -79,14 +92,20 @@ class Messenger {
private void load() {
log.info("loading messages")
loadFolder(inbox, inboxMessages, INBOX)
loadFolder(outbox, outboxMessages, OUTBOX)
loadFolder(sent, sentMessages, SENT)
folders.each {name, file ->
log.info("loading message folder $name")
Set<MWMessage> set = messages.get(file)
if (set == null) {
set = new LinkedHashSet<>()
messages.put(file, set)
}
loadFolder(file, set, name)
}
log.info("loaded messages")
timer.schedule({send()} as TimerTask, 1000, 1000)
}
private void loadFolder(File file, Set<MWMessage> dest, int folder) {
private void loadFolder(File file, Set<MWMessage> dest, String folder) {
Files.walk(file.toPath())
.filter({it.getFileName().toString().endsWith(".mwmessage")})
.forEach { Path path ->

View File

@ -117,10 +117,12 @@ class MainFrameModel {
def feeds = []
def feedItems = []
def messageFolders = [trans("INBOX"), trans("OUTBOX"), trans("SENT")]
def messageFolders = [Messenger.INBOX, Messenger.OUTBOX, Messenger.SENT]
def messageFolderTx = messageFolders.collect {trans(it.toUpperCase())}
List<MWMessageStatus> messageHeaders = new ArrayList<>()
Map<Integer, Set<MWMessageStatus>> messageHeadersMap = new HashMap<>()
int folderIdx
Map<String, Set<MWMessageStatus>> messageHeadersMap = new HashMap<>()
String folderIdx
List<Object> messageAttachments = new ArrayList<>()
MessageNotificator messageNotificator
@ -213,9 +215,9 @@ class MainFrameModel {
treeRoot = new DefaultMutableTreeNode()
sharedTree = new DefaultTreeModel(treeRoot)
messageHeadersMap.put(0, new LinkedHashSet<>())
messageHeadersMap.put(1, new LinkedHashSet<>())
messageHeadersMap.put(2, new LinkedHashSet<>())
messageHeadersMap.put(Messenger.INBOX, new LinkedHashSet<>())
messageHeadersMap.put(Messenger.OUTBOX, new LinkedHashSet<>())
messageHeadersMap.put(Messenger.SENT, new LinkedHashSet<>())
Timer timer = new Timer("download-pumper", true)
timer.schedule({

View File

@ -648,7 +648,7 @@ class MainFrameView {
gridLayout(rows : 1, cols : 1)
splitPane(orientation : JSplitPane.HORIZONTAL_SPLIT, continuousLayout : true, dividerLocation : 100) {
panel {
list(id : "message-folders-list", items:model.messageFolders)
list(id : "message-folders-list", items:model.messageFolderTx)
}
panel {
gridLayout(rows :1, cols : 1)
@ -1254,9 +1254,9 @@ class MainFrameView {
int index = messageFolderList.getSelectedIndex()
if (index < 0)
index = 0
model.folderIdx = index
model.folderIdx = model.messageFolders[index]
model.messageHeaders.clear()
model.messageHeaders.addAll(model.messageHeadersMap.get(index))
model.messageHeaders.addAll(model.messageHeadersMap.get(model.folderIdx))
messageHeaderTable.model.fireTableDataChanged()
})