fix: irc network distinguish inactive and error (#76)

This commit is contained in:
Ludvig Lundgren 2022-01-10 22:05:27 +01:00 committed by GitHub
parent 27f902041b
commit d8c37dde2f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 48 additions and 17 deletions

View file

@ -41,6 +41,12 @@ func (h *channelHealth) SetMonitoring() {
h.monitoringSince = time.Now() h.monitoringSince = time.Now()
} }
// resetMonitoring remove monitoring and time
func (h *channelHealth) resetMonitoring() {
h.monitoring = false
h.monitoringSince = time.Time{}
}
type Handler struct { type Handler struct {
network *domain.IrcNetwork network *domain.IrcNetwork
filterService filter.Service filterService filter.Service
@ -241,17 +247,15 @@ func (s *Handler) Run() error {
s.client = client s.client = client
// set connected since now // set connected since now
s.connectedSince = time.Now() s.setConnectionStatus()
s.connected = true
// Connect // Connect
err = client.RunContext(ctx) err = client.RunContext(ctx)
if err != nil { if err != nil {
log.Error().Err(err).Msgf("could not connect to %v", addr) log.Error().Err(err).Msgf("could not connect to %v", addr)
// set connected false if we loose connection or stop // reset connection status on handler and channels
s.connectedSince = time.Time{} s.resetConnectionStatus()
s.connected = false
return err return err
} }
@ -259,6 +263,25 @@ func (s *Handler) Run() error {
return nil return nil
} }
func (s *Handler) setConnectionStatus() {
// set connected since now
s.connectedSince = time.Now()
s.connected = true
}
func (s *Handler) resetConnectionStatus() {
// set connected false if we loose connection or stop
s.connectedSince = time.Time{}
s.connected = false
// loop over channelHealth and reset each one
for _, h := range s.channelHealth {
if h != nil {
h.resetMonitoring()
}
}
}
func (s *Handler) GetNetwork() *domain.IrcNetwork { func (s *Handler) GetNetwork() *domain.IrcNetwork {
return s.network return s.network
} }

View file

@ -146,12 +146,16 @@ const LiItem = ({ idx, network }: LiItemProps) => {
</div> */} </div> */}
<div className="col-span-3 items-center sm:px-6 text-sm font-medium text-gray-900 dark:text-white cursor-pointer" onClick={toggleEdit}> <div className="col-span-3 items-center sm:px-6 text-sm font-medium text-gray-900 dark:text-white cursor-pointer" onClick={toggleEdit}>
<span className="relative inline-flex items-center"> <span className="relative inline-flex items-center">
{network.connected ? ( {
<span className="mr-3 flex h-3 w-3 relative" title={`Connected since: ${simplifyDate(network.connected_since)}`}> network.enabled ? (
<span className="animate-ping inline-flex h-full w-full rounded-full bg-green-400 opacity-75"></span> network.connected ? (
<span className="inline-flex absolute rounded-full h-3 w-3 bg-green-500"></span> <span className="mr-3 flex h-3 w-3 relative" title={`Connected since: ${simplifyDate(network.connected_since)}`}>
</span> <span className="animate-ping inline-flex h-full w-full rounded-full bg-green-400 opacity-75"></span>
) : <span className="mr-3 flex h-3 w-3 rounded-full opacity-75 bg-red-400" />} <span className="inline-flex absolute rounded-full h-3 w-3 bg-green-500"></span>
</span>
) : <span className="mr-3 flex h-3 w-3 rounded-full opacity-75 bg-red-400" />
) : <span className="mr-3 flex h-3 w-3 rounded-full opacity-75 bg-gray-500" />
}
{network.name} {network.name}
</span> </span>
</div> </div>
@ -182,12 +186,16 @@ const LiItem = ({ idx, network }: LiItemProps) => {
<div className="col-span-4 flex items-center sm:px-6 "> <div className="col-span-4 flex items-center sm:px-6 ">
<span className="relative inline-flex items-center"> <span className="relative inline-flex items-center">
{c.monitoring ? ( {
<span className="mr-3 flex h-3 w-3 relative" title="monitoring"> network.enabled ? (
<span className="animate-ping inline-flex h-full w-full rounded-full bg-green-400 opacity-75"></span> c.monitoring ? (
<span className="inline-flex absolute rounded-full h-3 w-3 bg-green-500"></span> <span className="mr-3 flex h-3 w-3 relative" title="monitoring">
</span> <span className="animate-ping inline-flex h-full w-full rounded-full bg-green-400 opacity-75"></span>
) : <span className="mr-3 flex h-3 w-3 rounded-full opacity-75 bg-red-400" />} <span className="inline-flex absolute rounded-full h-3 w-3 bg-green-500"></span>
</span>
) : <span className="mr-3 flex h-3 w-3 rounded-full opacity-75 bg-red-400" />
) : <span className="mr-3 flex h-3 w-3 rounded-full opacity-75 bg-gray-500" />
}
{c.name} {c.name}
</span> </span>
</div> </div>