From b84bc6688e43899efd33303671d70c8a831049a1 Mon Sep 17 00:00:00 2001 From: Home Assistant Version Control Date: Sat, 25 Jul 2026 02:41:58 +0000 Subject: [PATCH] 52 files --- .../mail_and_packages/__init__.py | 66 +++- .../__pycache__/__init__.cpython-314.pyc | Bin 13744 -> 0 bytes .../application_credentials.cpython-314.pyc | Bin 1699 -> 0 bytes .../__pycache__/const.cpython-314.pyc | Bin 36934 -> 0 bytes .../__pycache__/coordinator.cpython-314.pyc | Bin 30339 -> 0 bytes .../__pycache__/entity.cpython-314.pyc | Bin 822 -> 0 bytes .../__pycache__/helpers.cpython-314.pyc | Bin 7064 -> 0 bytes .../mail_and_packages/binary_sensor.py | 2 +- custom_components/mail_and_packages/camera.py | 24 +- .../mail_and_packages/config_flow.py | 339 +++++++++++------- custom_components/mail_and_packages/const.py | 153 +++++++- .../mail_and_packages/coordinator.py | 2 +- .../mail_and_packages/manifest.json | 2 +- custom_components/mail_and_packages/sensor.py | 4 +- .../__pycache__/__init__.cpython-314.pyc | Bin 1498 -> 0 bytes .../__pycache__/amazon.cpython-314.pyc | Bin 33403 -> 0 bytes .../shippers/__pycache__/base.cpython-314.pyc | Bin 3187 -> 0 bytes .../__pycache__/generic.cpython-314.pyc | Bin 30712 -> 0 bytes .../__pycache__/post_de.cpython-314.pyc | Bin 19096 -> 0 bytes .../shippers/__pycache__/usps.cpython-314.pyc | Bin 23978 -> 0 bytes .../mail_and_packages/strings.json | 69 +++- .../mail_and_packages/translations/ca.json | 71 +++- .../mail_and_packages/translations/cs.json | 101 +++--- .../mail_and_packages/translations/de.json | 73 +++- .../mail_and_packages/translations/en.json | 76 +++- .../mail_and_packages/translations/es.json | 71 +++- .../translations/es_419.json | 71 +++- .../mail_and_packages/translations/fi.json | 71 +++- .../mail_and_packages/translations/fr.json | 71 +++- .../mail_and_packages/translations/hu.json | 71 +++- .../mail_and_packages/translations/it.json | 71 +++- .../mail_and_packages/translations/ko.json | 71 +++- .../mail_and_packages/translations/nl.json | 71 +++- .../mail_and_packages/translations/no.json | 71 +++- .../mail_and_packages/translations/pl.json | 71 +++- .../mail_and_packages/translations/pt.json | 71 +++- .../mail_and_packages/translations/pt_BR.json | 71 +++- .../mail_and_packages/translations/ru.json | 71 +++- .../mail_and_packages/translations/sk.json | 71 +++- .../mail_and_packages/translations/sl.json | 71 +++- .../mail_and_packages/translations/sv.json | 71 +++- .../translations/zh_Hant_HK.json | 71 +++- .../__pycache__/__init__.cpython-314.pyc | Bin 215 -> 0 bytes .../utils/__pycache__/amazon.cpython-314.pyc | Bin 20413 -> 0 bytes .../utils/__pycache__/cache.cpython-314.pyc | Bin 5382 -> 0 bytes .../utils/__pycache__/date.cpython-314.pyc | Bin 1646 -> 0 bytes .../utils/__pycache__/email.cpython-314.pyc | Bin 8731 -> 0 bytes .../utils/__pycache__/image.cpython-314.pyc | Bin 22556 -> 0 bytes .../utils/__pycache__/imap.cpython-314.pyc | Bin 38163 -> 0 bytes .../utils/__pycache__/shipper.cpython-314.pyc | Bin 12504 -> 0 bytes .../mail_and_packages/utils/image.py | 8 +- .../mail_and_packages/utils/imap.py | 24 +- 52 files changed, 2002 insertions(+), 219 deletions(-) delete mode 100644 custom_components/mail_and_packages/__pycache__/__init__.cpython-314.pyc delete mode 100644 custom_components/mail_and_packages/__pycache__/application_credentials.cpython-314.pyc delete mode 100644 custom_components/mail_and_packages/__pycache__/const.cpython-314.pyc delete mode 100644 custom_components/mail_and_packages/__pycache__/coordinator.cpython-314.pyc delete mode 100644 custom_components/mail_and_packages/__pycache__/entity.cpython-314.pyc delete mode 100644 custom_components/mail_and_packages/__pycache__/helpers.cpython-314.pyc delete mode 100644 custom_components/mail_and_packages/shippers/__pycache__/__init__.cpython-314.pyc delete mode 100644 custom_components/mail_and_packages/shippers/__pycache__/amazon.cpython-314.pyc delete mode 100644 custom_components/mail_and_packages/shippers/__pycache__/base.cpython-314.pyc delete mode 100644 custom_components/mail_and_packages/shippers/__pycache__/generic.cpython-314.pyc delete mode 100644 custom_components/mail_and_packages/shippers/__pycache__/post_de.cpython-314.pyc delete mode 100644 custom_components/mail_and_packages/shippers/__pycache__/usps.cpython-314.pyc delete mode 100644 custom_components/mail_and_packages/utils/__pycache__/__init__.cpython-314.pyc delete mode 100644 custom_components/mail_and_packages/utils/__pycache__/amazon.cpython-314.pyc delete mode 100644 custom_components/mail_and_packages/utils/__pycache__/cache.cpython-314.pyc delete mode 100644 custom_components/mail_and_packages/utils/__pycache__/date.cpython-314.pyc delete mode 100644 custom_components/mail_and_packages/utils/__pycache__/email.cpython-314.pyc delete mode 100644 custom_components/mail_and_packages/utils/__pycache__/image.cpython-314.pyc delete mode 100644 custom_components/mail_and_packages/utils/__pycache__/imap.cpython-314.pyc delete mode 100644 custom_components/mail_and_packages/utils/__pycache__/shipper.cpython-314.pyc diff --git a/custom_components/mail_and_packages/__init__.py b/custom_components/mail_and_packages/__init__.py index 06a5a8b..91d48b8 100644 --- a/custom_components/mail_and_packages/__init__.py +++ b/custom_components/mail_and_packages/__init__.py @@ -4,7 +4,13 @@ import asyncio import logging from homeassistant.config_entries import ConfigEntry -from homeassistant.const import CONF_RESOURCES +from homeassistant.const import ( + CONF_HOST, + CONF_PASSWORD, + CONF_PORT, + CONF_RESOURCES, + CONF_USERNAME, +) from homeassistant.core import HomeAssistant from homeassistant.helpers import ( config_validation as cv, @@ -125,17 +131,24 @@ async def async_setup_entry( VERSION, ISSUE_URL, ) - hass.data.setdefault(DOMAIN, {}) - updated_config = config_entry.data.copy() + # Merge data and options + config = {**config_entry.data, **config_entry.options} # Sort the resources - updated_config[CONF_RESOURCES] = sorted(updated_config[CONF_RESOURCES]) - - if updated_config != config_entry.data: - hass.config_entries.async_update_entry(config_entry, data=updated_config) - - # Variables for data coordinator - config = config_entry.data + if CONF_RESOURCES in config: + sorted_resources = sorted(config[CONF_RESOURCES]) + if sorted_resources != config[CONF_RESOURCES]: + config[CONF_RESOURCES] = sorted_resources + if CONF_RESOURCES in config_entry.options: + hass.config_entries.async_update_entry( + config_entry, + options={**config_entry.options, CONF_RESOURCES: sorted_resources}, + ) + else: + hass.config_entries.async_update_entry( + config_entry, + data={**config_entry.data, CONF_RESOURCES: sorted_resources}, + ) # Setup the data coordinator coordinator = MailDataUpdateCoordinator(hass, config, config_entry) @@ -147,9 +160,19 @@ async def async_setup_entry( await hass.config_entries.async_forward_entry_setups(config_entry, PLATFORMS) + config_entry.async_on_unload(config_entry.add_update_listener(update_listener)) + return True +async def update_listener( + hass: HomeAssistant, config_entry: MailAndPackagesConfigEntry +) -> None: + """Update listener.""" + _LOGGER.debug("Attempting to reload sensors from the %s integration", DOMAIN) + await hass.config_entries.async_reload(config_entry.entry_id) + + async def async_remove_config_entry_device( # pylint: disable-next=unused-argument hass: HomeAssistant, config_entry: ConfigEntry, @@ -193,14 +216,35 @@ async def async_migrate_entry(hass, config_entry): _LOGGER.debug("Migrating from version %s", version) updated_config = {**config_entry.data} + updated_options = {**config_entry.options} _migrate_legacy_versions(updated_config, version, config_entry) _apply_default_config(updated_config) - if updated_config != config_entry.data: + # Version 20 migration: split non-IMAP options out of data + if version < 20: + imap_keys = { + CONF_HOST, + CONF_PORT, + CONF_USERNAME, + CONF_PASSWORD, + CONF_IMAP_SECURITY, + CONF_VERIFY_SSL, + CONF_AUTH_TYPE, + "token", + "access_token", + "refresh_token", + "auth_implementation", + } + for key in list(updated_config.keys()): + if key not in imap_keys: + updated_options[key] = updated_config.pop(key) + + if updated_config != config_entry.data or updated_options != config_entry.options: hass.config_entries.async_update_entry( config_entry, data=updated_config, + options=updated_options, version=new_version, ) diff --git a/custom_components/mail_and_packages/__pycache__/__init__.cpython-314.pyc b/custom_components/mail_and_packages/__pycache__/__init__.cpython-314.pyc deleted file mode 100644 index ef73d6f0eca72e4103f42d86588f7cd600fa8f95..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13744 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 diff --git a/custom_components/mail_and_packages/__pycache__/application_credentials.cpython-314.pyc b/custom_components/mail_and_packages/__pycache__/application_credentials.cpython-314.pyc deleted file mode 100644 index bee69a763cf3c701a21e58643332d4ef034ebaff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1699 zcmbVM&2Jk;6rcUf+KHWy=CicTrhy16#ap66E31lRwW;hwldu7cL+EO|p4dy*JFA&- zP%I7>aN)$21OEX34LL-ZRXI@(y*Wxt#Emy=Z=4`;VWgRP^LuaJyqWiVv!2go5w!Kv z=U@J%BJ_t?q|F!#XB`l_$VMDJL$*|vDl(TV3RfyBSC<7QSG9`H^+Z;xV-s5$bo6 z5)TR@U!6@1mr8w>5q4w zmaE(G)DUj@9wm$%@XltF^N5u!Dv^Oda#kEDk^splwj{F7YHB@j zGPHFgpC$ImDV_uw7F{&KA_e-{J`7z{L(k*~-yu{7><0QoYD%^wG=pZ#`$KjhWGnl? z$RV!o>#4k(@-hWrwp8GW_FC+X)uzi>JT9*9)Je+zkkNb*$%iEIPoS}teecDLgvkU&8U%WE@ES`MT$A|bGZS#WOP04tqn z$V$r{ao8Ef!-~;SJmG+8NPwr!Td%? z(<}WkAsI-&^{ZAo)=H-tSf9a8 z6P*;plrS>Vy|K=c?|=zTtgWq?CY=)oH(hoVdQJm#C*jl8VCgNeNiwww!fSZaejZKD z{&4jD(NFUyljbigAD&EZbSp1&*MEF)l6$xNMxXcKxLX`22w z6OZ&w>7le;$i-t0FxPXO_-+$^BB1l&ClVDlBK3BFH|cwTiDFC zPZ11nvq<{jcU1ZlE%kMzEgUbd_vUN8ne8{4vZVJ7q|F}Bz2BRE+?%-%(7fIs&rHkR L-1#D~I63eiBIwNH diff --git a/custom_components/mail_and_packages/__pycache__/const.cpython-314.pyc b/custom_components/mail_and_packages/__pycache__/const.cpython-314.pyc deleted file mode 100644 index 64ac63830bfd12fd3daf8f858e179d24951446e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36934 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 aU`=ZiC4rn0#MPearlODI<`4JduKx$QR}psr diff --git a/custom_components/mail_and_packages/__pycache__/coordinator.cpython-314.pyc b/custom_components/mail_and_packages/__pycache__/coordinator.cpython-314.pyc deleted file mode 100644 index f702f17ab880ea0588e1205c64ab7e5c146ff672..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30339 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 diff --git a/custom_components/mail_and_packages/__pycache__/entity.cpython-314.pyc b/custom_components/mail_and_packages/__pycache__/entity.cpython-314.pyc deleted file mode 100644 index a7f587aec8b5d9d461eb1ddb8369c90fbaefb0fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 822 zcmaJfgM7ZDZSgr{{uO+D^aL^T69C19zS5kigv_L2ck2I#rj$MOUZ?-W}4e zU)(#(vrH=RM^gDOS)BMxME)rY-?A~+J{J%}%yp-26)h%&1O~Ab8r_wM0SgnRjkEP6 z7EDdfxX@BPGe1p^xeisFneuRPYk4e?So1w}r({6DLQeL16P&xq3*5klTHp-4z}>}) zpti(X+&B0T-V)t^@4PsAYOwiH31b+G@jvKc7*YGWgndQ!dEpMFOp2!F2@in{6aI;u zv>Qc(Qo&MAY0;!Kl~JA;`x>S1a+WMIYm|;+r6Gw07ZTHTN+TIksv1bA!1P}_VtSoY zZBz{@15oiW2d=Sr1&inSk>X)DlwuT*yJ4-Y0!973HMmtLKj~<(FeF)I+kU9B?mKddq#F< cLH)k;8Q z+-dvG@P6<2xB7nG=l$b=%V{T24jg^`%3oZBe2xvHusXwRy~Yr-NJOHNw}{BZnV3m6 zbs=wxvnoq#PUUFLt31?f+#Iv07CMKETVpoWMtMGNj|r+kd2`$mbE;0tTjH*mTXj?3 z8u!G!suy@hw8fiZ&1!SZr}|(o`eUtXYphLei|teQ#oE>OSU?TXx%PNRtW)iz zybymT)}?k)-VqPRy4CJ3a*0cf8b_XGNzP z7G14Gbhna%M}1E80Pm&z0kH}AX37tUKHys@e^6`}{m^Q~R)J9m#WrZ|qhmv&sh5NU z3!zx9P|nH0skvfC&6kQwaH=E+&!zK)V7izMCeoR!>FJy@7-lpfT`ZQ=G@UgLZ7z{k zXP~xbO6B>fd?5!s8!661Ws9GSBo0f-!+fLi8#zLMw+T?Vi!if(RY3#QR}lu zCMHDb)cFhJ6PlCq6Jq4lSbY49<{F8QN5nUzWOO`vUQBAXQ|HG|ONq!tOmpac(!?8y zXcD&UNyg%dL{yZ-=$UwOLVN>Hbs?EZCTH?xxIJh#Wph*Mxq>R?XW_o2GF;7qYZk6i zQcKzN{NQwcDuZuZeP7}L9;BMtdLEcXk|J-Jj{FB9S?KE^-)3eQkr7QID{>+)nnerL zR?#NfMPbMc@8RRV&1cl_z|w&rJmjVSB5*P@2*hk!RdDA$+Dk(j`kF(T zIYlka!pCRJrDCqADnsW{ErCX zw@$#udq@}j%%m|!5_o;PN;gR{2K>r=iVs!Cr~C0qCOKnz!eVgsT4Z2t^_yK}67Q6j zx5y+_YSoH z$C5H9TIwSPchLg-29d*Z29)I$;NNBz*|WTz^b!j>%e~0vnJ~A|dp0+n&ddj=bE+;+ z!E16FMW3n*HK(Y`;6m$oDX8d(fbKa^AE->v6duxdU2z|(#^@{4!wUS4(|TDBhge^=o4 z=x>JaURmxLuDFgao_XN#tvNbZ9Gz>9?iELO#nHRw7+7%(+aLg8N`XA6GRFe$x zphpDR4@>l0q&mcr&Sqt}TB!i)dBKJh)xjltsa0K}D*(9*S3UzoWAmVbg206txf?27 zRnTjtNT=ik4jcu7aJMu4n@A|!q5iBXu)#wOa0h5xkh2nJV8e!-otSN#0&sF4EYEO2 zj8X&nAEBoTazn$Ci@gRU%iLrQ@Qt9K*seIL->w0xA>3=g;!|A0W^AWkU*rLNPXJcg z3}6)Ma}BPp6y74n&M64n8-Ng%tac%5MTgVdEn1_S=0GSLo^D z-`sxdu{Cm;mm7m);k>;-`_7_ULV#q@3xAnW$l z4HoLp9PJxC)Bpij>xKn6fPiPihMW!o;P!w(+dppS*qZoqDGr4I%QT2<2e{H;qquHz zv2K<4ZMJVa`1EC@kv*(|rvWs?x|KDj_(njuxIe{i1CMFDRVrIjmP8d;)eX?B@6)iO*zX~1qP8Si}KGYMmRNcPakgBK>8Di%l7nlpCId+K5nNC9-at$0Rx#?n4qJc%YY#IZX!$zJVWwy+eO%rS* z8&Qvv8o6ZMq~R|^ET;c*%9KF2cUReI%f>*zJaLCG6?ZttmQCfFMd~6cwiiy=RqfC3 z;KR&9he!kEAh<)NIT?bG;FMgN4T4LosDoj%j1ii~Q=!$kVj5x>^IRF@7#TsS*_B)& zmr>J~Az8vvP-x6mjrpEtt9?+x3$2GGP7F(GgYsDzr0 zd1WPZ?0xn2cbB}kPTxHJ<9*OvjIVfJS?8QHjVKPvO1%Qu>$v_x(T4L-+lbkD{>!_%O1hB4#iW%qyRMZfYYM3i%6fjKUrfI4BPKKXl)Me8@ z^JN1G##cmUV4HyuP1{>#HpMmyNQ`gP5aL6V1#`E3$=E-nogne_a`k>7pW!e@8f7IQ zpHa&*c*yBAAQVJEj$)Vt?F)oZpACg)R}n47iE6uol^tXZ!uW0X#2K?vmK`UxUVM2+ z+ZG^`pm+2#S<7~$tj79neKw=d2(-G$*hO6{w2TQj&6;}~;&rKXb)hwi2^COF<@tPZTL0=% z$i$3?*#!=BkwCAMr-7D>(_xnk*RDr88i$!n8H593zPuvA4m5uDDpsbFqH)*Kg{$y8 z#jJ8I5A!%&hhCg!IiIAzDL;!{VIYuPs9SwZ%xG3P1I>(ToLnlY8Y5{u=8fUISV7KG z&S+c~l1Um186gEllV)hpc{bc<0S~2TSz$WNpxFNc7*L1amZj{it2eK%`S-8*_pgSA zKkTc7&Q$!diZ{Oa+5>m<(&(+Rn`3Lfz7=0z#karW4&Ckl*gdrTt?0+@=wj?Mq4~zi z>nGQQj{8E#y47>Tb=`Gay_f873=(@Z4 z#yi*FS?+vs&Hd7<`=tl|_S=Vla^=q9kNu$~cD=Rhr$1QYHcYH{gn8iW_(k$g^Uq)Z zjdJ(!ujl{ZJG3Q`mi8@{1P1^5rHiz6eMuNPFL3MJ&2!5=$39H1`6Bmyk-u%QIPkTC zqWAmGXGVGMBVHIiWckSBA04oKG{6HNX2!$MLsm`7mNJs0*(GUe4$``qa78TB6o6(a zl%}UaC}a?Kcs6|QLjE$90L`q-%&GYTeOAp3d1Rc2xe?8t&X+(o%QzL4yw))TS$xQ> z=~?_iJtriA7|QvaBBLtQns!f-b9x4er{+?|*ic3zF5^SXsARUK0MTC3JfLnduHY?*Z7iJ)_m1|C6|^nGg5)(K{dCYM@O-x-=#T2ngOAK9d%f#v8Ey_2k|g{ zNI-=E5MG%rW#qQp;_&_lBSk;%lEAnp;G*6e}%_Q35}#ooVYfgaz$GV!cCyB6&_ rX&qW7zV)V_MfW2!q|P7pL2B($J0uq#^+1^PI0)Y3V;34xy5qkCHD!YX diff --git a/custom_components/mail_and_packages/binary_sensor.py b/custom_components/mail_and_packages/binary_sensor.py index 2446c6e..8d8657c 100644 --- a/custom_components/mail_and_packages/binary_sensor.py +++ b/custom_components/mail_and_packages/binary_sensor.py @@ -21,7 +21,7 @@ _LOGGER = logging.getLogger(__name__) async def async_setup_entry(hass, entry: MailAndPackagesConfigEntry, async_add_devices): """Initialize binary_sensor platform.""" coordinator = entry.runtime_data.coordinator - resources = entry.data.get(CONF_RESOURCES, []) + resources = coordinator.config.get(CONF_RESOURCES, []) binary_sensors = [ PackagesBinarySensor(value, coordinator, entry) diff --git a/custom_components/mail_and_packages/camera.py b/custom_components/mail_and_packages/camera.py index c0a2a40..de19263 100644 --- a/custom_components/mail_and_packages/camera.py +++ b/custom_components/mail_and_packages/camera.py @@ -5,6 +5,7 @@ from __future__ import annotations import logging import os from pathlib import Path +from typing import Any import anyio import voluptuous as vol @@ -85,6 +86,11 @@ async def async_setup_entry( class MailCam(CoordinatorEntity, Camera): """Representation of a local file camera.""" + @property + def config_data(self) -> dict[str, Any]: + """Return merged data and options.""" + return {**self.config.data, **self.config.options} + def __init__( self, hass, @@ -100,7 +106,7 @@ class MailCam(CoordinatorEntity, Camera): self.config = config self._name = CAMERA_DATA[name][SENSOR_NAME] self._type = name - self._host = config.data.get(CONF_HOST) + self._host = self.config_data.get(CONF_HOST) self._unique_id = config.entry_id # Derive config keys and default image from camera type name @@ -132,8 +138,8 @@ class MailCam(CoordinatorEntity, Camera): # Set custom image paths self._no_mail = None - if custom_img_key and config.data.get(custom_img_key): - self._no_mail = config.data.get(custom_img_file_key) + if custom_img_key and self.config_data.get(custom_img_key): + self._no_mail = self.config_data.get(custom_img_file_key) _LOGGER.debug( "%s camera - custom image enabled: %s", self._type, @@ -141,8 +147,8 @@ class MailCam(CoordinatorEntity, Camera): ) # Set initial file path based on camera type and custom settings - if custom_img_key and config.data.get(custom_img_key): - self._file_path = config.data.get(custom_img_file_key) + if custom_img_key and self.config_data.get(custom_img_key): + self._file_path = self.config_data.get(custom_img_file_key) _LOGGER.debug( "%s camera - initial file path set to: %s", self._type, @@ -326,7 +332,7 @@ class MailCam(CoordinatorEntity, Camera): resize_images, delivery_images, 800, 600 ) - duration = self.config.data.get(CONF_DURATION, 5) * 1000 + duration = self.config_data.get(CONF_DURATION, 5) * 1000 gif_created = await self.hass.async_add_executor_job( generate_delivery_gif, resized_images, @@ -358,7 +364,7 @@ class MailCam(CoordinatorEntity, Camera): def _collect_generic_delivery_images(self) -> list[str]: """Collect delivery images for the generic camera.""" delivery_images = [] - enabled_resources = self.config.data.get("resources", []) + enabled_resources = self.config_data.get("resources", []) for camera_type in CAMERA_DATA: # Skip generic, USPS, and Post DE cameras @@ -576,9 +582,9 @@ class MailCam(CoordinatorEntity, Camera): if ( custom_img_conf and custom_img_file_conf - and self.config.data.get(custom_img_conf) + and self.config_data.get(custom_img_conf) ): - custom_file_path = self.config.data.get(custom_img_file_conf) + custom_file_path = self.config_data.get(custom_img_file_conf) if custom_file_path and Path(custom_file_path).exists(): # Check if the file path matches the custom "no mail" image return Path(file_path).resolve() == Path(custom_file_path).resolve() diff --git a/custom_components/mail_and_packages/config_flow.py b/custom_components/mail_and_packages/config_flow.py index 0266ab6..c020381 100644 --- a/custom_components/mail_and_packages/config_flow.py +++ b/custom_components/mail_and_packages/config_flow.py @@ -19,7 +19,7 @@ from homeassistant.const import ( CONF_RESOURCES, CONF_USERNAME, ) -from homeassistant.core import HomeAssistant +from homeassistant.core import HomeAssistant, callback from homeassistant.helpers import config_entry_oauth2_flow, selector from .const import ( @@ -358,8 +358,17 @@ async def _get_mailboxes( oauth_token=oauth_token, ) - except (TimeoutError, AioImapException, ConnectionRefusedError) as err: - _LOGGER.error("Unable to connect: %s", err) + except (TimeoutError, AioImapException, ConnectionRefusedError, InvalidAuth) as err: + _LOGGER.error( + "Unable to connect: %s (IMAP server %s:%s as %s, security: %s, oauth: %s, class: %s)", + err if str(err) else "Authentication failed or timed out", + host, + port, + user, + security, + oauth_token is not None, + type(err).__name__, + ) return [] _LOGGER.debug("Attempting to get mailbox list...") @@ -493,6 +502,7 @@ async def _get_schema_step_2( user_input: list, default_dict: list, hass: HomeAssistant, + entry: config_entries.ConfigEntry | None = None, ) -> Any: """Get a schema using the default_dict as a backup.""" if user_input is None: @@ -502,6 +512,31 @@ async def _get_schema_step_2( """Get default value for key.""" return user_input.get(key, default_dict.get(key, fallback_default)) + oauth_token = None + if entry: + try: + implementation = ( + await config_entry_oauth2_flow.async_get_config_entry_implementation( + hass, + entry, + ) + ) + session = config_entry_oauth2_flow.OAuth2Session( + hass, + entry, + implementation, + ) + await session.async_ensure_token_valid() + oauth_token = session.token.get("access_token") + except Exception as err: # noqa: BLE001 + _LOGGER.error("Error refreshing OAuth token: %s", err) + + if not oauth_token: + if "token" in data and isinstance(data["token"], dict): + oauth_token = data["token"].get("access_token") + else: + oauth_token = data.get("access_token") + mailboxes = await _get_mailboxes( hass, data[CONF_HOST], @@ -510,7 +545,7 @@ async def _get_schema_step_2( data.get(CONF_PASSWORD, ""), data[CONF_IMAP_SECURITY], data[CONF_VERIFY_SSL], - data.get("token", {}).get("access_token"), + oauth_token, ) default_folder = _get_default(CONF_FOLDER) @@ -817,7 +852,15 @@ async def _validate_login( except ssl.SSLError: errors["base"] = "ssl_error" except (TimeoutError, AioImapException, ConnectionRefusedError) as err: - _LOGGER.error("Unable to connect: %s", err) + _LOGGER.error( + "Unable to connect: %s (IMAP server %s:%s as %s, security: %s, oauth: False, class: %s)", + err if str(err) else "Authentication failed or timed out", + user_input[CONF_HOST], + user_input[CONF_PORT], + user_input[CONF_USERNAME], + user_input[CONF_IMAP_SECURITY], + type(err).__name__, + ) errors["base"] = "cannot_connect" else: if result != "OK": @@ -840,6 +883,14 @@ class MailAndPackagesFlowHandler( CONNECTION_CLASS = config_entries.CONN_CLASS_CLOUD_POLL DOMAIN = DOMAIN + @staticmethod + @callback + def async_get_options_flow( + config_entry: config_entries.ConfigEntry, + ) -> config_entries.OptionsFlow: + """Get the options flow for this handler.""" + return MailAndPackagesOptionsFlow(config_entry) + @property def logger(self) -> logging.Logger: """Return logger.""" @@ -858,6 +909,12 @@ class MailAndPackagesFlowHandler( "prompt": "consent", } ) + elif auth_type == AUTH_TYPE_OAUTH_MICROSOFT: + data.update( + { + "prompt": "select_account", + } + ) return data def __init__(self): @@ -951,12 +1008,16 @@ class MailAndPackagesFlowHandler( """Handle OAuth2 completion — store token and continue to step 2.""" self._data.update(data) if self._entry: - if self.source == config_entries.SOURCE_REAUTH: - return self.async_update_reload_and_abort( - self._entry, - data=self._data, - ) - return await self.async_step_reconfig_2() + # Reconfigure or Reauth flow: update entry and reload + self.hass.config_entries.async_update_entry( + self._entry, + data=self._data, + ) + await self.hass.config_entries.async_reload(self._entry.entry_id) + if self.context.get("source") == config_entries.SOURCE_REAUTH: + return self.async_abort(reason="reauth_successful") + _LOGGER.debug("%s reconfigured.", DOMAIN) + return self.async_abort(reason="reconfigure_successful") return await self.async_step_config_2() async def _show_auth_form(self, user_input): @@ -1053,6 +1114,7 @@ class MailAndPackagesFlowHandler( user_input, defaults, self.hass, + getattr(self, "_entry", None), ), errors=self._errors, ) @@ -1212,6 +1274,22 @@ class MailAndPackagesFlowHandler( auth_type = self._data.get(CONF_AUTH_TYPE, AUTH_TYPE_PASSWORD) if auth_type != AUTH_TYPE_PASSWORD: + if ( + self._entry + and self._entry.data.get(CONF_AUTH_TYPE) == auth_type + and self._entry.data.get(CONF_HOST) == self._data.get(CONF_HOST) + and self._entry.data.get(CONF_USERNAME) + == self._data.get(CONF_USERNAME) + and "token" in self._data + ): + self.hass.config_entries.async_update_entry( + self._entry, + data=self._data, + ) + await self.hass.config_entries.async_reload(self._entry.entry_id) + _LOGGER.debug("%s reconfigured (oauth skip).", DOMAIN) + return self.async_abort(reason="reconfigure_successful") + self._data[CONF_VERIFY_SSL] = True self.hass.data.setdefault(DOMAIN, {}) self.hass.data[DOMAIN]["oauth_provider"] = auth_type @@ -1219,7 +1297,13 @@ class MailAndPackagesFlowHandler( self._errors = await _validate_login(self.hass, self._data) if self._errors == {}: - return await self.async_step_reconfig_2() + self.hass.config_entries.async_update_entry( + self._entry, + data=self._data, + ) + await self.hass.config_entries.async_reload(self._entry.entry_id) + _LOGGER.debug("%s reconfigured.", DOMAIN) + return self.async_abort(reason="reconfigure_successful") return await self._show_reconfig_imap_form(user_input) @@ -1265,117 +1349,104 @@ class MailAndPackagesFlowHandler( errors=self._errors, ) - async def async_step_reconfig_2(self, user_input=None): - """Configure form step 2.""" + +class MailAndPackagesOptionsFlow(config_entries.OptionsFlow): + """Options flow for Mail and Packages.""" + + def __init__(self, config_entry: config_entries.ConfigEntry) -> None: + """Initialize options flow.""" + self._entry = config_entry + self._data = {**config_entry.data, **config_entry.options} + self._errors = {} + + async def async_step_init( + self, user_input: dict[str, Any] | None = None + ) -> config_entries.ConfigFlowResult: + """Manage the options.""" self._errors = {} - _LOGGER.debug("Loading step 2...") if user_input is not None: self._data.update(user_input) - self._errors, user_input = await _validate_user_input(user_input, self.hass) + if self._data.get("generate_mp4", False): + if not await _check_ffmpeg(): + self._errors["generate_mp4"] = "ffmpeg_not_found" if len(self._errors) == 0: if self._data.get(CONF_ALLOW_FORWARDED_EMAILS, False): - return await self.async_step_reconfig_forwarded_emails() - + return await self.async_step_options_forwarded_emails() if any( - sensor in self._data.get(CONF_RESOURCES, []) - for sensor in AMAZON_SENSORS + sensor in self._data[CONF_RESOURCES] for sensor in AMAZON_SENSORS ): - return await self.async_step_reconfig_amazon() - has_custom_image = ( - self._data.get(CONF_CUSTOM_IMG) - or self._data.get(CONF_AMAZON_CUSTOM_IMG) - or self._data.get(CONF_UPS_CUSTOM_IMG) - or self._data.get(CONF_WALMART_CUSTOM_IMG) - or self._data.get(CONF_FEDEX_CUSTOM_IMG) - or self._data.get(CONF_GENERIC_CUSTOM_IMG) - or self._data.get(CONF_POST_DE_CUSTOM_IMG) - ) - if has_custom_image: - return await self.async_step_reconfig_3() + return await self.async_step_options_amazon() + if self._data.get(CONF_CUSTOM_IMG, False): + return await self.async_step_options_3() + return await self.async_step_options_storage() - return await self.async_step_reconfig_storage() + return await self._show_options_2(user_input) - return await self._show_reconfig_2(user_input) + return await self._show_options_2(user_input) - return await self._show_reconfig_2(user_input) + async def _show_options_2(self, user_input): + """Step 2 of options.""" + if self._data.get(CONF_AMAZON_FWDS) == []: + self._data[CONF_AMAZON_FWDS] = "(none)" - async def _show_reconfig_2(self, user_input): - """Step 2 setup.""" return self.async_show_form( - step_id="reconfig_2", + step_id="init", data_schema=await _get_schema_step_2( - self._data, - user_input, - self._data, - self.hass, + self._data, user_input, self._data, self.hass, self._entry ), errors=self._errors, ) - async def async_step_reconfig_3(self, user_input=None): - """Configure form step 2.""" + async def async_step_options_forwarded_emails(self, user_input=None): + """Configure forwarded emails.""" self._errors = {} if user_input is not None: + if user_input.get(CONF_FORWARDED_EMAILS) == "(none)": + user_input[CONF_FORWARDED_EMAILS] = [] self._data.update(user_input) - self._errors, user_input = await _validate_user_input(self._data, self.hass) if len(self._errors) == 0: - return await self.async_step_reconfig_storage() + if any( + sensor in self._data[CONF_RESOURCES] for sensor in AMAZON_SENSORS + ): + return await self.async_step_options_amazon() + if self._data.get(CONF_CUSTOM_IMG, False): + return await self.async_step_options_3() + return await self.async_step_options_storage() + return await self._show_options_forwarded_emails(user_input) - return await self._show_reconfig_3(user_input) - - return await self._show_reconfig_3(user_input) - - async def _show_reconfig_3(self, user_input=None): # pylint: disable=unused-argument - """Step 3 setup.""" - # Defaults - defaults = { - CONF_CUSTOM_IMG_FILE: DEFAULT_CUSTOM_IMG_FILE, - CONF_AMAZON_CUSTOM_IMG_FILE: DEFAULT_AMAZON_CUSTOM_IMG_FILE, - CONF_UPS_CUSTOM_IMG_FILE: DEFAULT_UPS_CUSTOM_IMG_FILE, - CONF_WALMART_CUSTOM_IMG_FILE: DEFAULT_WALMART_CUSTOM_IMG_FILE, - CONF_FEDEX_CUSTOM_IMG_FILE: DEFAULT_FEDEX_CUSTOM_IMG_FILE, - CONF_GENERIC_CUSTOM_IMG_FILE: DEFAULT_GENERIC_CUSTOM_IMG_FILE, - CONF_POST_DE_CUSTOM_IMG_FILE: DEFAULT_POST_DE_CUSTOM_IMG_FILE, - } + async def _show_options_forwarded_emails(self, user_input=None): + """Step forwarded emails.""" + if self._data.get(CONF_FORWARDED_EMAILS, []) == []: + self._data[CONF_FORWARDED_EMAILS] = "(none)" return self.async_show_form( - step_id="reconfig_3", - data_schema=_get_schema_step_3(self._data, defaults), + step_id="options_forwarded_emails", + data_schema=_get_schema_step_forwarded_emails(user_input, self._data), errors=self._errors, ) - async def async_step_reconfig_amazon(self, user_input=None): - """Configure form step amazon.""" + async def async_step_options_amazon(self, user_input=None): + """Configure amazon options.""" self._errors = {} if user_input is not None: + if user_input.get(CONF_AMAZON_FWDS) == "(none)": + user_input[CONF_AMAZON_FWDS] = [] self._data.update(user_input) self._errors, user_input = await _validate_user_input(self._data, self.hass) if len(self._errors) == 0: - has_custom_image = ( - self._data.get(CONF_CUSTOM_IMG) - or self._data.get(CONF_AMAZON_CUSTOM_IMG) - or self._data.get(CONF_UPS_CUSTOM_IMG) - or self._data.get(CONF_WALMART_CUSTOM_IMG) - or self._data.get(CONF_FEDEX_CUSTOM_IMG) - or self._data.get(CONF_GENERIC_CUSTOM_IMG) - or self._data.get(CONF_POST_DE_CUSTOM_IMG) - ) - if has_custom_image: - return await self.async_step_reconfig_3() + if self._data.get(CONF_CUSTOM_IMG, False): + return await self.async_step_options_3() + return await self.async_step_options_storage() + return await self._show_options_amazon(user_input) + return await self._show_options_amazon(user_input) - return await self.async_step_reconfig_storage() - - return await self._show_reconfig_amazon(user_input) - - return await self._show_reconfig_amazon(user_input) - - async def _show_reconfig_amazon(self, user_input): - """Step 3 setup.""" - if self._data.get(CONF_AMAZON_FWDS, []) == []: + async def _show_options_amazon(self, user_input): + """Step Amazon setup.""" + if self._data.get(CONF_AMAZON_FWDS) == []: self._data[CONF_AMAZON_FWDS] = "(none)" return self.async_show_form( - step_id="reconfig_amazon", + step_id="options_amazon", data_schema=_get_schema_step_amazon( user_input, self._data, @@ -1384,61 +1455,83 @@ class MailAndPackagesFlowHandler( errors=self._errors, ) - async def async_step_reconfig_forwarded_emails( - self, - user_input: dict[str, Any] | None = None, - ): - """Configure form step forwarded emails.""" + async def async_step_options_3(self, user_input=None): + """Configure custom image files.""" self._errors = {} if user_input is not None: self._data.update(user_input) self._errors, user_input = await _validate_user_input(self._data, self.hass) if len(self._errors) == 0: - if any( - sensor in self._data.get(CONF_RESOURCES, []) - for sensor in AMAZON_SENSORS - ): - return await self.async_step_reconfig_amazon() - if self._data.get(CONF_CUSTOM_IMG, False): - return await self.async_step_reconfig_3() - return await self.async_step_reconfig_storage() - return await self._show_reconfig_forwarded_emails(user_input) - return await self._show_reconfig_forwarded_emails(user_input) - - async def _show_reconfig_forwarded_emails(self, user_input=None): - """Step forwarded emails.""" - if self._data.get(CONF_FORWARDED_EMAILS, []) == []: - self._data[CONF_FORWARDED_EMAILS] = "(none)" + return await self.async_step_options_storage() + return await self._show_options_3(user_input) + return await self._show_options_3(user_input) + async def _show_options_3(self, user_input): + """Step 3 setup.""" return self.async_show_form( - step_id="reconfig_forwarded_emails", - data_schema=_get_schema_step_forwarded_emails(user_input, self._data), + step_id="options_3", + data_schema=_get_schema_step_3(self._data, self._data), errors=self._errors, ) - async def async_step_reconfig_storage(self, user_input=None): - """Configure form step storage.""" + async def async_step_options_storage(self, user_input=None): + """Configure storage options.""" self._errors = {} if user_input is not None: self._data.update(user_input) self._errors, user_input = await _validate_user_input(self._data, self.hass) if len(self._errors) == 0: - self.hass.config_entries.async_update_entry( - self._entry, - data=self._data, - ) - await self.hass.config_entries.async_reload(self._entry.entry_id) - _LOGGER.debug("%s reconfigured.", DOMAIN) - return self.async_abort(reason="reconfigure_successful") + # Remove config flow only fields to not pollute options + options_keys = { + CONF_FOLDER, + CONF_SCAN_INTERVAL, + CONF_RESOURCES, + CONF_CUSTOM_IMG, + CONF_AMAZON_CUSTOM_IMG, + CONF_UPS_CUSTOM_IMG, + CONF_WALMART_CUSTOM_IMG, + CONF_FEDEX_CUSTOM_IMG, + CONF_GENERIC_CUSTOM_IMG, + CONF_POST_DE_CUSTOM_IMG, + CONF_CUSTOM_IMG_FILE, + CONF_AMAZON_CUSTOM_IMG_FILE, + CONF_UPS_CUSTOM_IMG_FILE, + CONF_WALMART_CUSTOM_IMG_FILE, + CONF_FEDEX_CUSTOM_IMG_FILE, + CONF_GENERIC_CUSTOM_IMG_FILE, + CONF_POST_DE_CUSTOM_IMG_FILE, + CONF_ALLOW_FORWARDED_EMAILS, + CONF_FORWARDED_EMAILS, + CONF_FORWARDING_HEADER, + CONF_AMAZON_FWDS, + CONF_AMAZON_DOMAIN, + CONF_AMAZON_DAYS, + CONF_STORAGE, + "generate_mp4", + "generate_grid", + "gif_duration", + "custom_days", + "allow_external", + "image_security", + "imap_timeout", + "image_name", + "image_path", + "usps_placeholder", + } + for key in list(self._data.keys()): + if key not in options_keys: + self._data.pop(key, None) - return await self._show_reconfig_storage(user_input) + return self.async_create_entry(title="", data=self._data) - return await self._show_reconfig_storage(user_input) + return await self._show_options_storage(user_input) - async def _show_reconfig_storage(self, user_input): - """Step 3 setup.""" + return await self._show_options_storage(user_input) + + async def _show_options_storage(self, user_input): + """Step storage setup.""" return self.async_show_form( - step_id="reconfig_storage", + step_id="options_storage", data_schema=_get_schema_step_storage(user_input, self._data), errors=self._errors, ) diff --git a/custom_components/mail_and_packages/const.py b/custom_components/mail_and_packages/const.py index 235204f..690250f 100644 --- a/custom_components/mail_and_packages/const.py +++ b/custom_components/mail_and_packages/const.py @@ -12,7 +12,7 @@ from .entity import MailandPackagesBinarySensorEntityDescription DOMAIN = "mail_and_packages" DOMAIN_DATA = f"{DOMAIN}_data" -VERSION = "0.5.16" +VERSION = "0.5.18" ISSUE_URL = "http://github.com/moralmunky/Home-Assistant-Mail-And-Packages" PLATFORM = "sensor" PLATFORMS = ["binary_sensor", "camera", "sensor"] @@ -21,7 +21,7 @@ COORDINATOR = "coordinator_mail" OVERLAY = ["overlay.png", "vignette.png", "white.png"] SERVICE_UPDATE_FILE_PATH = "update_file_path" CAMERA = "cameras" -CONFIG_VER = 19 +CONFIG_VER = 20 # Attributes ATTR_AMAZON_IMAGE = "amazon_image" @@ -147,6 +147,7 @@ AMAZON_DOMAINS = [ "amazon.fr", "amazon.ae", "amazon.nl", + "amazon.se", ] AMAZON_DELIVERED_SUBJECT = [ "Delivered: ", @@ -794,7 +795,10 @@ SENSOR_DATA = { }, "purolator_delivering": { "email": ["NotificationService@purolator.com"], - "subject": ["Purolator - Your shipment is out for delivery"], + "subject": [ + "Purolator - Your shipment is out for delivery", + "Purolator - Your shipment is on its way", + ], }, "purolator_packages": { "email": ["NotificationService@purolator.com"], @@ -1085,6 +1089,89 @@ SENSOR_DATA = { }, "bolcom_packages": {}, "bolcom_tracking": {"pattern": ["3S[A-Z0-9]{10,18}", "JJD\\d{14,25}", "\\d{14}"]}, + # PostNord (Sweden) + "postnord_delivered": { + "email": [ + "no-reply@postnord.com", + "avisering@postnord.se", + ], + "subject": [ + "finns att hämta", + "finns att hamta", + "har levererats", + "Levererad", + ], + }, + "postnord_delivering": { + "email": [ + "no-reply@postnord.com", + "avisering@postnord.se", + ], + "subject": [ + "Leverans på väg", + "Leverans pa vag", + "är på väg", + "ar pa vag", + "på väg till dig", + "pa vag till dig", + ], + }, + "postnord_packages": {}, + "postnord_tracking": {"pattern": ["[0-9]{13,18}SE", "SE[0-9]{9}SE"]}, + # Bring (Sweden/Norway) + "bring_delivered": { + "email": [ + "no-reply@bring.com", + "notification@bring.com", + ], + "subject": [ + "paket att hämta", + "paket att hamta", + "har levererats", + ], + }, + "bring_delivering": { + "email": [ + "no-reply@bring.com", + "notification@bring.com", + ], + "subject": [ + "sändning är på väg", + "sandning ar pa vag", + "sändning har skickats", + "sandning har skickats", + "Paket på väg", + "Paket pa vag", + ], + }, + "bring_packages": {}, + "bring_tracking": {"pattern": ["PARCEL[0-9A-Z]{10,20}", "CT[0-9]{9}NO"]}, + # DB Schenker (Sweden) + "db_schenker_delivered": { + "email": [ + "no-reply@dbschenker.com", + "no-reply@dsv.com", + ], + "subject": [ + "finns nu att hämta", + "finns nu att hamta", + "har levererats", + ], + }, + "db_schenker_delivering": { + "email": [ + "no-reply@dbschenker.com", + "no-reply@dsv.com", + ], + "subject": [ + "Avisering om paket", + "Leveransbesked", + "är på väg", + "ar pa vag", + ], + }, + "db_schenker_packages": {}, + "db_schenker_tracking": {"pattern": ["\\d{10,16}"]}, } # Sensor definitions @@ -1771,6 +1858,63 @@ CAMERA_EXTRACTION_CONFIG = { "image_type": "jpeg", "attachment_filename_pattern": "delivery", }, + # PostNord + "postnord_delivered": SensorEntityDescription( + name="Mail PostNord Delivered", + native_unit_of_measurement="package(s)", + icon="mdi:package-variant-closed", + key="postnord_delivered", + ), + "postnord_delivering": SensorEntityDescription( + name="Mail PostNord Delivering", + native_unit_of_measurement="package(s)", + icon="mdi:truck-delivery", + key="postnord_delivering", + ), + "postnord_packages": SensorEntityDescription( + name="Mail PostNord Packages", + native_unit_of_measurement="package(s)", + icon="mdi:package-variant-closed", + key="postnord_packages", + ), + # Bring + "bring_delivered": SensorEntityDescription( + name="Mail Bring Delivered", + native_unit_of_measurement="package(s)", + icon="mdi:package-variant-closed", + key="bring_delivered", + ), + "bring_delivering": SensorEntityDescription( + name="Mail Bring Delivering", + native_unit_of_measurement="package(s)", + icon="mdi:truck-delivery", + key="bring_delivering", + ), + "bring_packages": SensorEntityDescription( + name="Mail Bring Packages", + native_unit_of_measurement="package(s)", + icon="mdi:package-variant-closed", + key="bring_packages", + ), + # DB Schenker + "db_schenker_delivered": SensorEntityDescription( + name="Mail DB Schenker Delivered", + native_unit_of_measurement="package(s)", + icon="mdi:package-variant-closed", + key="db_schenker_delivered", + ), + "db_schenker_delivering": SensorEntityDescription( + name="Mail DB Schenker Delivering", + native_unit_of_measurement="package(s)", + icon="mdi:truck-delivery", + key="db_schenker_delivering", + ), + "db_schenker_packages": SensorEntityDescription( + name="Mail DB Schenker Packages", + native_unit_of_measurement="package(s)", + icon="mdi:package-variant-closed", + key="db_schenker_packages", + ), } # Sensor Index @@ -1806,6 +1950,9 @@ SHIPPERS = [ "poczta_polska", "buildinglink", "post_de", + "postnord", + "bring", + "db_schenker", ] # Authentication types diff --git a/custom_components/mail_and_packages/coordinator.py b/custom_components/mail_and_packages/coordinator.py index 33dbb74..cd31deb 100644 --- a/custom_components/mail_and_packages/coordinator.py +++ b/custom_components/mail_and_packages/coordinator.py @@ -141,7 +141,7 @@ class MailDataUpdateCoordinator(DataUpdateCoordinator): raise UpdateFailed("OAuth token refresh failed") from err data = await self.process_emails(self.hass, config) - except UpdateFailed: + except (UpdateFailed, ConfigEntryAuthFailed): raise except Exception as error: _LOGGER.error("Problem updating sensors: %s", error) diff --git a/custom_components/mail_and_packages/manifest.json b/custom_components/mail_and_packages/manifest.json index 6ac4ca9..b9daf2d 100644 --- a/custom_components/mail_and_packages/manifest.json +++ b/custom_components/mail_and_packages/manifest.json @@ -18,5 +18,5 @@ "dateparser", "aioimaplib" ], - "version": "0.5.16" + "version": "0.5.18" } diff --git a/custom_components/mail_and_packages/sensor.py b/custom_components/mail_and_packages/sensor.py index e51b764..2803813 100644 --- a/custom_components/mail_and_packages/sensor.py +++ b/custom_components/mail_and_packages/sensor.py @@ -51,7 +51,7 @@ async def async_setup_entry( ): """Set up the sensor entities.""" coordinator = entry.runtime_data.coordinator - resources = entry.data.get(CONF_RESOURCES, []) + resources = coordinator.config.get(CONF_RESOURCES, []) sensors = [ PackagesSensor(entry, SENSOR_TYPES[variable], coordinator) @@ -238,7 +238,7 @@ class ImagePathSensors(CoordinatorEntity, SensorEntity): path = self.coordinator.data.get( ATTR_IMAGE_PATH, - self._config.data.get(CONF_PATH), + self.coordinator.config.get(CONF_PATH), ) if self.type == "usps_mail_image_system_path" and image: diff --git a/custom_components/mail_and_packages/shippers/__pycache__/__init__.cpython-314.pyc b/custom_components/mail_and_packages/shippers/__pycache__/__init__.cpython-314.pyc deleted file mode 100644 index 502ee91d8b9c0bd993544494a466429f40fe5b69..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1498 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 diff --git a/custom_components/mail_and_packages/shippers/__pycache__/generic.cpython-314.pyc b/custom_components/mail_and_packages/shippers/__pycache__/generic.cpython-314.pyc deleted file mode 100644 index dacdd35bcdb2e9d3420b3a3864f2a232d31e13b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30712 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 diff --git a/custom_components/mail_and_packages/shippers/__pycache__/post_de.cpython-314.pyc b/custom_components/mail_and_packages/shippers/__pycache__/post_de.cpython-314.pyc deleted file mode 100644 index e872651e9d2552670e89ed02343f8d130250b0fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19096 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 diff --git a/custom_components/mail_and_packages/utils/__pycache__/amazon.cpython-314.pyc b/custom_components/mail_and_packages/utils/__pycache__/amazon.cpython-314.pyc deleted file mode 100644 index 8e312b74cb8326d03307a21d299b3eeacb786987..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20413 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 diff --git a/custom_components/mail_and_packages/utils/__pycache__/cache.cpython-314.pyc b/custom_components/mail_and_packages/utils/__pycache__/cache.cpython-314.pyc deleted file mode 100644 index 8e3a00120fdbfb4f27db830a16b04d7f3f538319..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5382 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 diff --git a/custom_components/mail_and_packages/utils/__pycache__/date.cpython-314.pyc b/custom_components/mail_and_packages/utils/__pycache__/date.cpython-314.pyc deleted file mode 100644 index 410cc0b0da1bb1cfcca9103bd968a263673d9c94..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1646 zcma)6-D?v;5Z}#R(ll3F(Q4HOyH<;awmFe1^`oLFemp4gP*D(%^X}SSP42?(25p{7 z^+kLTLGYyy3WE6GH1r{OuRi&v#8P~7W-rlLN_AjoXLn}jX683@gu%o*N(CBcAexFJ1%7xm zK5e>DI2+8FZcWIjV!KhL8ijr+g;{}!ZOFy0wj(xcGAIiZ{S>Q!El?2`S%=zL>#g%}vqZMfu$1mR`?F8AMJPY5FJJW~ zlac2v9u*A3WHk|lb4)A>=~q}ea-Fh5rVc5xW7i_U=%NsTkWMJ!3DyZ!g<>vesS38; zM2{AHSGK*$dB5!up8V~zm@8-;tH67J#c37GC&CT9>cy+xIbYi9nh(Iat71QLq;K%m z%!`?(aj;<=Tr=3J&eY4T`{W2b|5u-2PjKuiz+DrP7bwrdDZyR^q;ONL9~HZmQv`1U z5t~@Kq_!js(ETQK3QKPx003O4jY$WP5?X8`i%zxe0IpR1N>bwlF&2bORDCy?4O|=; zXwfbd+#2W5lnNn0t5Ri-V2}`?o2zHXyveaglVkS_DOJ=s3z}I3lVeg{)!&8HPn=8N zv#~|^AegA!lg33D_PjjXG)5Z6$h+K{F}|vgZv(@Bjq9d5;IRuD)iK*avlr~eeqhO5 znTUzGGTj`WXbdZy%&h@>h5&i+Zj_85NFXIt>Ihx?R)BTA(7R0A;vX&&VYzsm7SeH#ZF`Xmzb!SaIEktcIJ(^Y&Fr~KgLI&0|@Sj`X3G=c6ECJ&eXEQ}_ diff --git a/custom_components/mail_and_packages/utils/__pycache__/email.cpython-314.pyc b/custom_components/mail_and_packages/utils/__pycache__/email.cpython-314.pyc deleted file mode 100644 index b7220d4155fa46817a2a8da7f192d88a1b188a8a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8731 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 diff --git a/custom_components/mail_and_packages/utils/__pycache__/image.cpython-314.pyc b/custom_components/mail_and_packages/utils/__pycache__/image.cpython-314.pyc deleted file mode 100644 index 8e0eeaecbf1264240134fae081c01143ea1fc640..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22556 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 G!2U1k97du5 diff --git a/custom_components/mail_and_packages/utils/__pycache__/imap.cpython-314.pyc b/custom_components/mail_and_packages/utils/__pycache__/imap.cpython-314.pyc deleted file mode 100644 index 18f798a3b96c4e6aefee3445afc3827f4161cbe2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38163 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 CNa?@; diff --git a/custom_components/mail_and_packages/utils/__pycache__/shipper.cpython-314.pyc b/custom_components/mail_and_packages/utils/__pycache__/shipper.cpython-314.pyc deleted file mode 100644 index 16d8ff3a0d742dfa65370fc53a2fed16ae44a8e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12504 zcmc&)du$s=dLKTP&!tF_)SHqh$+9g!D8FJWvK2?Rq$2DnzAOIo3mz~3t55ZmaGN2sn^vZ0&XTc(R^)_Np+@sCT27H?UW|d(aoUvc7P2*jB;9_6j!Q88Kx2 zVF&JbdO{}FRx8sH3R3?*@g5%lLNGf|SczS#+o=v64(l!VaEW%zhwtbJW1bz#!=MBS#upw*=o5JR>5VnM^VO!W9 zcC-rk1m|y!ctsK9L@XPV%p_Z5@pyWCESqy@&t;OY6uR@O;>Zpsqxi1TSoXd{&Pu^= z1^d%uNkxcL2Xm#x&gxGrQZhR(jVb1ll$`wq!#7ye_hssOqjI1%o*p}$8fuM?%h~j3 zG@c&KpvJMR+{!-{V;9Y6W7kS!EVs()h=(%g6fqjr#xfa=N`BN>hCjI-$ppK{wix`2 zl;oWy3nt{ZU4aDw`GSR&)+|^_vN5rC!A_EcSsaT_NK1H|#c3q;%L?JUj0sCq7^_BB zkIF+VV;vjG~zHCF?R7)7Qp(u@#c1HzgjxZR`ul(7t2^rr)MT`J~b!=O{Yi&*qp z_h{|bvxvpRj-clmYs9okE0}1a*^ih8T>6{EJYo$S^|zmadY-{b`KDpQbX0Ia{kByX zOJ;0+HG^*b{zL`dLs_~W^uJ$%&uqU$@_oaq6`u@Ld6R;+Ici@g>j?jE;GrR)43M zN1S?{_3XJgdTk7w+g`#u7|8$|tk+AP_>ta9#@QzhqPOaG;^&dVC}o_HLi^fR{Uy`- zpxyrvEj+p(f5(`e)v@R9s(HlR#H{RS9)JJ#gehfc5pvxFF-cAavl0|0H8vC+8y`KD zlz>E1dNjzPBjj*|xkAc8QpjNX^aG_Gz_esciVsr_gkcXtsd z;UkCJcI|5E&$)M=Jow6v?N4@YKl$pP?A-fiOQ~X%l8TiSJ2e8RkTbwZ#Tq?&?3rh} z!-|kdo*ExgOe4uLMc}|DSuu!;BPFNCYhmzSs*Q8eb#Bt4yW&2xz&w`(Myc0dQN<43!`HM4CC#R0imTZ}LChsY` z=zQDx1J^|FEwl5_`@Y>bJhe6>@f?Q(Fb-#)z>1h_7%!!@5#0 zz?LRwj1j{CYFT>~O8{7lre+_nr(obBCcU25SR3Fifd&Db4>xhf2pHtbp6cKV^S0(m z6HFE+!kpW91j@b^qJlsuJ}p5_^FxYNlX6>*klsD=jdnm>e~X})z;YBTAxdmyL<(Ru zB(jYX8JZR|Ujlrt6&G(%hZ-q_=du|IskS=7P4pfme1cCvfF?UwS>=@dNBt9hpIQC4 zDr=_tW-GT$y7Fa#i_y2E)345!?Vb^LPj=rFcmK+F<;8!ken0lBx?7^}t-kYpGu1~v z7Cw&syKPQ<9@;il`lGhVW1l+R>WZLw)aUh&UgAV2bEODK{m)eE({ABBs;*b-9`&bG?KP}U_M-5gyZI78?`KK$(RqC!>C!6Qic@UZ>nXW z2G-n;7YAMl%9&(5bvhLs-PHPaiE@D=!72&8xxq0_(>?$W+1ZF7}fkF9i1 zy)V2U`v^+cTTr@13llwGE(^?6{=;w0I5#Xa1J!PGzvVjbnkjF;a(LeM^o;FkDCbuT z0zJDg6Pf)^XP~ozeb7*P$Y=UsSNWk5)726I@+$jeLqRNS!xGt)N7*Ox?OMSMTkJ&} zC6SF>p|Z5r)S-WTqZGwE@($jCd(215i-a2`KZtT>fP!bJ0^1^pdI>)XJPi4-p($Y3eeT zun;jmiQXit=qn2}nz%O+w$fV3 zwW^eVJ-%NwrbL8;#9-yn@m~NB5=qiasU7V|`;jPyU~bdH!68U>sM>G5Z_g&bnQa}; zj*jFUT+EEbQe!Q4#r#HW&W)sF38{;kEn){oZKY|p7ELqf z>x!9EZ@X%xLBLhG5Oo3{g|8&jdeFGIiX0oMQcC#p{|5*_4iSs|qU~+lj~$cdywg4J z3|@BzXPu2RTe|0*-Jgp7yuWhZzu~%n!=zjKam^0HTN{Nh7$t8fC+c*8LPMM%DCSe?^vENL?>NR+CU_^}yT?$rNJ-vX zwg56&mah$}d8nP|w*~tmw4v-le4$z7_+my1yeyF2As_=tC?2cVdWaG>L|DY2M>y&c z*lZ%AQ9u(s(-35!V4U^(G@M!|dZXi10V}pXMo&y9OvQfG5T+GyrPv~73G=kCpxcl5 zI$MOTh{Y7hKEBGV)>*&)w~|-7<_Z_$F8d8p!? zh3k%S#hMCmyLK$q7-twZZ^gHhVOw*B9S_bdC|H4bt)N|nHwV_M$FhcYSvl>(Itg>B zNV|e;D=W-6W+=c?z};HJ59#00b1FGo(}xXIZdGh?y*@aPv*QNzqcCfre}AwaEn=?u zgp|rAgIr5FjhBPjbTE;U&+_Q>Hn^J@|y^VMAK(;0hJiW*L|ly z*T8F}&hj=A#lD_K@Q4hDVtnIN?hr559S$E0w+D~l3GY@iC?zv#30;NX7boHwJT;yT z(wo6VIw_BB%HnI#5vu3@X0<1B>>KLm1QW@T6b1q&Za9s>!T)BNN+R|H;80yYiAacI zQNIh^SdQYO6=C!&W!7UasFYOz2~A6!(<60-3@2mr@o3i zDuvFA18ckg<#Gq}*DN!mtM->t^w?t`X}0+rqErjObM z$g9}B2W??d8J5~0Jc8ZBxdYl;@yGXXu!rLei>)>=IG4)yd5n@UK{v=`oK-umS!iy! zY4PbLII*(DQwi0kQ-n&XLCgvpI-}5CghLUTg|!FoS`o;49>pGM&)-8K8Budujck*_ zvPcQvi$Q+d<697rYd!->Hs&i|u#@BM$7W+7cb(ws@W`~VLmGmoPi`YbP1QCp7mnmaE@mH&!IwA!>B>~41y)Ibv z6XPe^;n8ReXVq>A#tfc_6PC4L%O9(B!D>gW5lh4raTM#vS~caGx>cL9269(zROB{w zV!e%KxFG-*Yi0;|yyh*%(7Fnt>o6n|?a)X;N*X9ZJcTK~RhtEf>jC!_i$p?3DUE6k zs9Oop2gSSkC-PIUbFivdQBTN9aP5mzdkIQ7#3xBQP00`?6f#!I5KtM7jihqPga+iC zLl?+3zq6kn9~mK~8&+e9w648?`yPm(`-d8W2?-nrw3bH}oY*-Pea!5g;VblIG3(;b(0 z-nH?DYvc6ztZVy%l?gUzX6>f=!1n8b?U&-SfnAqh_$1IaW3I}VZ=EUIc4_cZ|CNRr z-+_svc~9UIPs>E_JqxpWZk0Ap@4me4)vLxNh#;lKwAOCkq7z?xZPyNrCxnFeOfr4wj`R?fg>L1thEH-vKB}$2axA5coFOR!500kh+#!5eF&ixoTvzP z1<>aDu8*LHb96UiMPP#_)0%4@h=B&~Y!4nyr_b{6#^K&B1S3x+6AAD{&ZFeeeG3;_ zbB@DmfO30pSI&6gspHaNeBcrAwP%n^JxCN2f)LonB-G%XOX|h1EjBgYz!wWw{K7g> z#Fa4&=~=47q5qUh$Yfx2wN|4JBltz4gs+=FgMg@mhm{AWo}D@{Sr+!$ix#v@=jufL=BKm!n9bHv_nd=9nHS%!=w zV~;r2l)1!MTDUUo=QaAy!4z!ds;rr_G zm$9c9{C9E>`860QNJK;UwcCWq!Uh`uj5rw7eq;kpx>U@=;&J0~QE!hT1z}f4Jcz?_ zVYH~q#pptdJ9mJC+pZPh)^oh?Xix)};2WvzaFF0mN}f)_5r;<{#HP%tn4H|ZCzNxN zd*7}BU(bH^=WUxeA8daGhc{x|b2!DZwe{6M+4E-0mIr>^^=3!Mw^o9h&=HABQ4${0&~EXiZrhab*tMM#5;LN zSg|4!FcOO=IYKKIwJIDS*}F#zTA!p2IU=!Y#UNA|>+v;7}1&Q<>WuJTFme zD>y_P(Glw4VQD((!ne2-!>D4#IXRq*lNG1-3XQn*G%A)!&2-c+@;Pag8l{9I*+!^2 zhyJP!)6Y&Hm}z};rtD8A`r$gQi~eWloI4SIzU?ia_cmVlHeT8=<87SvwoY2Xt~}LK zn|}7hyu0OwyJf+|T&e@UZ@Onr+x)2ShYo3n%6y{~e^|~FGeV0$o);&32*NKAf zH-GG#t?RqsESQ>G{%XX)Z}>M%zk-^hm(tIzU%PU~tnyclozk3Djukb@d(l{2N2EY-B08eKTJk_IRdQe9ZM$&H}Sc#Eg zDy$MNO5dhr4ItW8K;%n&H6Tjgq~aU}ZFhy!l^3{}`Ixb!e{U5FIu%1EC7=^Dw6C zBLvz81p0EhbS3myS3u8GI$^Frz!2yoa`bVdh`N{mL0jNZjqz$t`Qb9*>dwl;9^pfe z0J+83-``S;1CP-}Iv$NGj%f7sIL<`ViDl48CK18sVG6}Mk{%jDR6-&{#*Y*ZkEBj% zF=qto=#iNoIbx|a3^z_vo|4ELQyx4%9eUvSbci3H4)LSfl7-$fQyuDYOFO)pqi8)T zDYhsN1)_W09JZn)Keoh=Q1IPQb-hqvfx9WH)#5W-O23s+LVQiJ9T-g~#z&G*Ng#FH zL6?UhESL-i!>4TT7p(Df=K3`gf6YpM&FsHnmA_%-U$Ed8?8q0a_O_#R-cfVIQ8U#u z>u8>^-m~Cv_T7^PoO!z&zyYDVbvRydcN_Kq?~NG{4ZM5Y0QdOr7Et$lFBx>?`(N&N B*fjtE diff --git a/custom_components/mail_and_packages/utils/image.py b/custom_components/mail_and_packages/utils/image.py index e0e42fb..54e3c3d 100644 --- a/custom_components/mail_and_packages/utils/image.py +++ b/custom_components/mail_and_packages/utils/image.py @@ -1,5 +1,6 @@ """Image processing and management utilities for Mail and Packages.""" +import contextlib import datetime import hashlib import logging @@ -56,9 +57,12 @@ def default_image_path( """ storage = None try: - storage = config_entry.get(CONF_STORAGE) + storage = config_entry.options.get(CONF_STORAGE) or config_entry.data.get( + CONF_STORAGE + ) except AttributeError: - storage = config_entry.data[CONF_STORAGE] + with contextlib.suppress(AttributeError): + storage = config_entry.get(CONF_STORAGE) if storage: return storage diff --git a/custom_components/mail_and_packages/utils/imap.py b/custom_components/mail_and_packages/utils/imap.py index a2003aa..3d7e241 100644 --- a/custom_components/mail_and_packages/utils/imap.py +++ b/custom_components/mail_and_packages/utils/imap.py @@ -178,7 +178,25 @@ async def login( if account.protocol.state == NONAUTH: try: if oauth_token: - await account.xoauth2(user, oauth_token) + try: + res = await asyncio.wait_for( + account.xoauth2(user, oauth_token), + timeout=min(timeout, 15.0), + ) + if account.protocol.state not in {AUTH, SELECTED}: + _LOGGER.error( + "OAuth login failed. Result: %s, Lines: %s", + getattr(res, "result", None), + getattr(res, "lines", None), + ) + except TimeoutError as err: + _LOGGER.error( + "OAuth authentication timed out for %s. This typically indicates invalid OAuth credentials, missing 'https://mail.google.com/' scope, or a mismatched email address.", + user, + ) + raise InvalidAuth( + "OAuth authentication timed out or failed" + ) from err else: await account.login(user, pwd) except TimeoutError: @@ -188,7 +206,9 @@ async def login( raise InvalidAuth from err if account.protocol.state not in {AUTH, SELECTED}: - _LOGGER.error("Error logging in to IMAP Server") + _LOGGER.error( + "Error logging in to IMAP Server. State: %s", account.protocol.state + ) raise InvalidAuth return account