mirror of
https://github.com/idanoo/autobrr
synced 2025-07-23 08:49:13 +00:00
fix: irc network distinguish inactive and error (#76)
This commit is contained in:
parent
27f902041b
commit
d8c37dde2f
2 changed files with 48 additions and 17 deletions
|
@ -41,6 +41,12 @@ func (h *channelHealth) SetMonitoring() {
|
|||
h.monitoringSince = time.Now()
|
||||
}
|
||||
|
||||
// resetMonitoring remove monitoring and time
|
||||
func (h *channelHealth) resetMonitoring() {
|
||||
h.monitoring = false
|
||||
h.monitoringSince = time.Time{}
|
||||
}
|
||||
|
||||
type Handler struct {
|
||||
network *domain.IrcNetwork
|
||||
filterService filter.Service
|
||||
|
@ -241,17 +247,15 @@ func (s *Handler) Run() error {
|
|||
s.client = client
|
||||
|
||||
// set connected since now
|
||||
s.connectedSince = time.Now()
|
||||
s.connected = true
|
||||
s.setConnectionStatus()
|
||||
|
||||
// Connect
|
||||
err = client.RunContext(ctx)
|
||||
if err != nil {
|
||||
log.Error().Err(err).Msgf("could not connect to %v", addr)
|
||||
|
||||
// set connected false if we loose connection or stop
|
||||
s.connectedSince = time.Time{}
|
||||
s.connected = false
|
||||
// reset connection status on handler and channels
|
||||
s.resetConnectionStatus()
|
||||
|
||||
return err
|
||||
}
|
||||
|
@ -259,6 +263,25 @@ func (s *Handler) Run() error {
|
|||
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 {
|
||||
return s.network
|
||||
}
|
||||
|
|
|
@ -146,12 +146,16 @@ const LiItem = ({ idx, network }: LiItemProps) => {
|
|||
</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}>
|
||||
<span className="relative inline-flex items-center">
|
||||
{network.connected ? (
|
||||
{
|
||||
network.enabled ? (
|
||||
network.connected ? (
|
||||
<span className="mr-3 flex h-3 w-3 relative" title={`Connected since: ${simplifyDate(network.connected_since)}`}>
|
||||
<span className="animate-ping inline-flex h-full w-full rounded-full bg-green-400 opacity-75"></span>
|
||||
<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-red-400" />
|
||||
) : <span className="mr-3 flex h-3 w-3 rounded-full opacity-75 bg-gray-500" />
|
||||
}
|
||||
{network.name}
|
||||
</span>
|
||||
</div>
|
||||
|
@ -182,12 +186,16 @@ const LiItem = ({ idx, network }: LiItemProps) => {
|
|||
|
||||
<div className="col-span-4 flex items-center sm:px-6 ">
|
||||
<span className="relative inline-flex items-center">
|
||||
{c.monitoring ? (
|
||||
{
|
||||
network.enabled ? (
|
||||
c.monitoring ? (
|
||||
<span className="mr-3 flex h-3 w-3 relative" title="monitoring">
|
||||
<span className="animate-ping inline-flex h-full w-full rounded-full bg-green-400 opacity-75"></span>
|
||||
<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-red-400" />
|
||||
) : <span className="mr-3 flex h-3 w-3 rounded-full opacity-75 bg-gray-500" />
|
||||
}
|
||||
{c.name}
|
||||
</span>
|
||||
</div>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue