commit cb60e9a02b9fefb5c02d5d795e6d1cc139250bfd
parent 3e2e7cc2aaf59272f3889c594e4b3d2629d05943
Author: Emile 'iMil' Heitor <imil@NetBSD.org>
Date:   Fri, 14 Jul 2023 12:23:19 +0200
fix: load news without waiting
Diffstat:
| M | main.go |  |  | 22 | +++++++++++----------- | 
1 file changed, 11 insertions(+), 11 deletions(-)
diff --git a/main.go b/main.go
@@ -84,15 +84,6 @@ func newsFetch(client *girc.Client, channel string) {
 
 	newsList = make([]News, 0)
 
-	for {
-		if client.IsConnected() && len(client.ChannelList()) != 0 {
-			break
-		}
-		log.Printf("%v, not connected, waiting...\n", client.ChannelList())
-
-		time.Sleep(viper.GetDuration("feeds.frequency"))
-	}
-
 	feedFile := channel + "-feed.json"
 	// load saved news
 	f, err := os.OpenFile(feedFile, os.O_CREATE|os.O_RDWR, 0o644)
@@ -100,10 +91,18 @@ func newsFetch(client *girc.Client, channel string) {
 		log.Fatalf("can't open %s: %v", feedFile, err)
 	}
 	defer f.Close()
-	// read news from disk
 	decoder := json.NewDecoder(f)
 	if err := decoder.Decode(&newsList); err != nil {
-		client.Cmd.Message(channel, "could not load news list, empty?")
+		log.Println("could not load news list, empty?")
+	}
+
+	for {
+		if client.IsConnected() && len(client.ChannelList()) != 0 {
+			break
+		}
+		log.Printf("%v, not connected, waiting...\n", client.ChannelList())
+
+		time.Sleep(viper.GetDuration("feeds.frequency"))
 	}
 
 	for {
@@ -350,6 +349,7 @@ func main() {
 			}
 			for i := 0; i < n; i++ {
 				c.Cmd.Message(dest, girc.Fmt(fmtNews(showNews[i])))
+				time.Sleep(viper.GetDuration("irc.delay"))
 			}
 		}
 	})