瀏覽代碼

Simplifies logic and renames a method.

master
damencho 6 年之前
父節點
當前提交
380d9c75d1
共有 1 個檔案被更改,包括 15 行新增14 行删除
  1. 15
    14
      resources/prosody-plugins/mod_speakerstats_component.lua

+ 15
- 14
resources/prosody-plugins/mod_speakerstats_component.lua 查看文件

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

Loading…
取消
儲存