[freeboxos] Avoid useless API requests (phone) (#17310)

Avoids API requests when channels are unlinked.

Signed-off-by: Laurent Garnier <lg.hc@free.fr>
This commit is contained in:
lolodomo 2024-08-24 10:07:13 +02:00 committed by GitHub
parent 75b5a27455
commit 247d2d3216
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 20 additions and 5 deletions

View File

@ -36,6 +36,19 @@ public class DectHandler extends FxsHandler {
super(thing);
}
@Override
protected void internalPoll() throws FreeboxException {
if (isLinked(TELEPHONY_SERVICE) || isLinked(DECT_ACTIVE) || isLinked(ALTERNATE_RING)) {
Config config = getManager(PhoneManager.class).getConfig();
updateConfigChannels(config);
}
if (isLinked(ONHOOK) || isLinked(RINGING) || isLinked(HARDWARE_STATUS) || isLinked(GAIN_RX)
|| isLinked(GAIN_TX)) {
getManager(PhoneManager.class).getStatus(getClientId()).ifPresent(this::updateStatusChannels);
}
}
@Override
protected void updateConfigChannels(Config config) {
super.updateConfigChannels(config);

View File

@ -23,7 +23,6 @@ import org.openhab.binding.freeboxos.internal.api.rest.PhoneManager.Config;
import org.openhab.binding.freeboxos.internal.api.rest.PhoneManager.Status;
import org.openhab.core.library.types.OnOffType;
import org.openhab.core.thing.Thing;
import org.openhab.core.thing.ThingStatus;
import org.openhab.core.types.Command;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -52,10 +51,14 @@ public class FxsHandler extends ApiConsumerHandler {
protected void internalPoll() throws FreeboxException {
logger.debug("Polling landline status...");
Config config = getManager(PhoneManager.class).getConfig();
updateConfigChannels(config);
if (isLinked(TELEPHONY_SERVICE)) {
Config config = getManager(PhoneManager.class).getConfig();
updateConfigChannels(config);
}
getManager(PhoneManager.class).getStatus(getClientId()).ifPresent(this::updateStatusChannels);
if (isLinked(ONHOOK) || isLinked(RINGING) || isLinked(HARDWARE_STATUS)) {
getManager(PhoneManager.class).getStatus(getClientId()).ifPresent(this::updateStatusChannels);
}
}
protected void updateConfigChannels(Config config) {
@ -66,7 +69,6 @@ public class FxsHandler extends ApiConsumerHandler {
updateChannelOnOff(ONHOOK, status.onHook());
updateChannelOnOff(RINGING, status.isRinging());
updateChannelString(HARDWARE_STATUS, status.hardwareDefect() ? "KO" : "OK");
updateStatus(ThingStatus.ONLINE);
}
@Override