Browse Source

Simplifies logic and renames a method.

master
damencho 6 years ago
parent
commit
380d9c75d1
1 changed files with 15 additions and 14 deletions
  1. 15
    14
      resources/prosody-plugins/mod_speakerstats_component.lua

+ 15
- 14
resources/prosody-plugins/mod_speakerstats_component.lua View File

@@ -50,11 +50,11 @@ function on_message(event)
50 50
         local oldDominantSpeakerId = roomSpeakerStats['dominantSpeakerId'];
51 51
 
52 52
         if oldDominantSpeakerId then
53
-            roomSpeakerStats[oldDominantSpeakerId]:setIsDominantSpeaker(false);
53
+            roomSpeakerStats[oldDominantSpeakerId]:setDominantSpeaker(false);
54 54
         end
55 55
 
56 56
         if newDominantSpeaker then
57
-            newDominantSpeaker:setIsDominantSpeaker(true);
57
+            newDominantSpeaker:setDominantSpeaker(true);
58 58
         end
59 59
 
60 60
         room.speakerStats['dominantSpeakerId'] = occupant.jid;
@@ -70,8 +70,7 @@ SpeakerStats.__index = SpeakerStats;
70 70
 function new_SpeakerStats(nick)
71 71
     return setmetatable({
72 72
         totalDominantSpeakerTime = 0;
73
-        _dominantSpeakerStart = nil;
74
-        _isDominantSpeaker = false;
73
+        _dominantSpeakerStart = 0;
75 74
         nick = nick;
76 75
         displayName = nil;
77 76
     }, SpeakerStats);
@@ -80,22 +79,25 @@ end
80 79
 -- Changes the dominantSpeaker data for current occupant
81 80
 -- saves start time if it is new dominat speaker
82 81
 -- or calculates and accumulates time of speaking
83
-function SpeakerStats:setIsDominantSpeaker(isNowDominantSpeaker)
82
+function SpeakerStats:setDominantSpeaker(isNowDominantSpeaker)
84 83
     log("debug",
85 84
         "set isDominant %s for %s", tostring(isNowDominantSpeaker), self.nick);
86 85
 
87
-    if not self._isDominantSpeaker and isNowDominantSpeaker then
86
+    if not self:isDominantSpeaker() and isNowDominantSpeaker then
88 87
         self._dominantSpeakerStart = socket.gettime()*1000;
89
-    elseif self._isDominantSpeaker and not isNowDominantSpeaker then
88
+    elseif self:isDominantSpeaker() and not isNowDominantSpeaker then
90 89
         local now = socket.gettime()*1000;
91
-        local timeElapsed = math.floor(now - (self._dominantSpeakerStart or 0));
90
+        local timeElapsed = math.floor(now - self._dominantSpeakerStart);
92 91
 
93 92
         self.totalDominantSpeakerTime
94 93
             = self.totalDominantSpeakerTime + timeElapsed;
95
-        self._dominantSpeakerStart = nil;
94
+        self._dominantSpeakerStart = 0;
96 95
     end
96
+end
97 97
 
98
-    self._isDominantSpeaker = isNowDominantSpeaker;
98
+-- Returns true if the tracked user is currently a dominant speaker.
99
+function SpeakerStats:isDominantSpeaker()
100
+    return self._dominantSpeakerStart > 0;
99 101
 end
100 102
 --- End SpeakerStats
101 103
 
@@ -126,10 +128,9 @@ function occupant_joined(event)
126 128
 
127 129
                     -- before sending we need to calculate current dominant speaker
128 130
                     -- state
129
-                    if values._dominantSpeakerStart ~= nil then
131
+                    if values:isDominantSpeaker() ~= nil then
130 132
                         local timeElapsed = math.floor(
131
-                            socket.gettime()*1000
132
-                                - (values._dominantSpeakerStart or 0));
133
+                            socket.gettime()*1000 - values._dominantSpeakerStart);
133 134
                         totalDominantSpeakerTime = totalDominantSpeakerTime
134 135
                             + timeElapsed;
135 136
                     end
@@ -166,7 +167,7 @@ function occupant_leaving(event)
166 167
 
167 168
     local speakerStatsForOccupant = room.speakerStats[occupant.jid];
168 169
     if speakerStatsForOccupant then
169
-        speakerStatsForOccupant:setIsDominantSpeaker(false);
170
+        speakerStatsForOccupant:setDominantSpeaker(false);
170 171
 
171 172
         -- set display name
172 173
         local displayName = occupant:get_presence():get_child_text(

Loading…
Cancel
Save