diff --git a/dist/docker-registry-ui.js b/dist/docker-registry-ui.js
index e31d528..61ff5b7 100644
--- a/dist/docker-registry-ui.js
+++ b/dist/docker-registry-ui.js
@@ -37,5 +37,5 @@ function dt(e,t){(function(e){return it(e,n)||e.tagName.toLowerCase()})(e)!==t&&
/* Riot v7.1.0, @license MIT */function bt(e,r){var a=r.css,n=r.template,o=r.exports;return t.has(e)&&N('The component "'.concat(e,'" was already registered')),t.set(e,xt({name:e,css:a,template:n,exports:o})),t}
/* Riot WIP, @license MIT */
/* Riot v7.1.0, @license MIT */
-var Tt={cssManager:pt,DOMBindings:{template:Ye,createBinding:qe,createExpression:Ge,bindingTypes:xe,expressionTypes:k},globals:{DOM_COMPONENT_INSTANCE_PROPERTY:r,PARENT_KEY_SYMBOL:T}},At=function(e){V(r,e);var t=W(r);function r(e,a,n){var o;return M(this,r),o=t.call(this),e||console.error("You should set container to the wave!"),o.container=e,o.maxOpacity=a.opacity||.6,o.duration=a.duration||750,o.color=a.color||"#fff",o.center=a.center||!1,o.event=n,o.containerBound=o.receiveBound(),o.maxScale=o.containerBound.size/100*10,o.created=Date.now(),o.start={},o.createNode(),o.waveIn(),o}return P(r,[{key:"createNode",value:function(){this.wave=document.createElement("div"),this.wave.classList.add("wave"),this.container.appendChild(this.wave)}},{key:"waveIn",value:function(){var e=this;this.center&&!this.event&&console.error("Setup at least mouse event... Or just set center attribute"),this.start.x=this.center?this.containerBound.height/2:this.event.pageY-this.containerBound.offsetTop,this.start.y=this.center?this.containerBound.width/2:this.event.pageX-this.containerBound.offsetLeft;var t=-1!==window.navigator.userAgent.indexOf("Trident");setTimeout((function(){return e.setStyles(e.maxOpacity)}),t?50:0)}},{key:"waveOut",value:function(e){var t=this,r=Date.now()-this.created,a=Math.round(this.duration/2)-r;setTimeout((function(){t.setStyles(0),setTimeout((function(){t.wave.parentNode===t.container&&(t.container.removeChild(t.wave),e())}),t.duration)}),a>0?a:0)}},{key:"setStyles",value:function(e){this.wave.setAttribute("style",this.convertStyle({top:"".concat(this.start.x,"px"),left:"".concat(this.start.y,"px"),transform:"scale(".concat(this.maxScale,")"),"transition-duration":"".concat(this.duration,"ms"),"transition-timing-function":"cubic-bezier(0.250, 0.460, 0.450, 0.940)",background:this.color,opacity:e}))}},{key:"convertStyle",value:function(e){var t="";return Object.keys(e).forEach((function(r){e.hasOwnProperty(r)&&(t+=r+":"+e[r]+";")})),t}}]),r}(function(){function e(){M(this,e)}return P(e,[{key:"receiveBound",value:function(){var e;this.container||console.error("Yor class must contain a container. It is DOM Element. Define please this.container property.");var t=this.container&&this.container.ownerDocument,r=t.documentElement;"undefined"!==L(this.container.getBoundingClientRect)&&(e=this.container.getBoundingClientRect());var a=this.getWindow(t);return this.mix(e,{size:Math.max(e.width,e.height),offsetTop:e.top+a.pageYOffset-r.clientTop,offsetLeft:e.left+a.pageXOffset-r.clientLeft})}},{key:"isWindow",value:function(e){return null!==e&&e===e.window}},{key:"getWindow",value:function(e){return this.isWindow(e)?e:9===e.nodeType&&e.defaultView}},{key:"mix",value:function(e,t){for(var r in e)r in t||(t[r]=e[r]);return t}}]),e}()),Et={css:null,exports:{onMounted(){this._waves=[],this._events=[]},launch(e){var t=new At(this.$("#waves"),this.props,e);this._waves.push(t),this.props.onWaveStart&&this.props.onWaveStart(t),this._events.length||(this._events.push(e.target.addEventListener("mouseup",(()=>this.hold()))),this._events.push(e.target.addEventListener("mouseleave",(()=>this.hold()))))},hold(){this._waves[this._waves.length-1]&&this._waves[this._waves.length-1].waveOut(this.waveOut),this._waves[this._waves.length-1]&&this._waves.slice(this._waves.length-1,1)},waveOut(){this.props.onWaveEnd&&this.props.onWaveEnd()}},template:(e,t,r,a)=>e('
',[{redundantAttribute:"expr136",selector:"[expr136]",expressions:[{type:t.ATTRIBUTE,name:"class",evaluate:e=>["checkbox ",e.state.checked?"checked":""].join("")},{type:t.EVENT,name:"onclick",evaluate:e=>e.onChange}]},{redundantAttribute:"expr137",selector:"[expr137]",expressions:[{type:t.EVENT,name:"onclick",evaluate:e=>e.onChange}]},{type:r.SLOT,attributes:[],name:"default",redundantAttribute:"expr138",selector:"[expr138]"},{redundantAttribute:"expr139",selector:"[expr139]",expressions:[{type:t.VALUE,evaluate:e=>e.state.checked}]}]),name:"material-checkbox"},Ut={css:null,exports:{state:{transition:!1,opened:!1},onBeforeUpdate(e,t){t.opened!==e.opened&&(t.transition=!0,setTimeout((()=>this.update({opened:e.opened,transition:!1})),e.opened?0:200))},onUpdated(e,t){e.onClick&&this.$$(".material-dropdown-item").forEach(((e,t)=>{e.onclick=r=>{const a=e.attributes.getNamedItem("item");r.target.item=a&&a.value,r.target.index=t,Ct(this.props.onClick,r)}}))}},template:(e,t,r,a)=>e('',[{type:r.IF,evaluate:e=>e.props.opened||e.state.opened,redundantAttribute:"expr141",selector:"[expr141]",template:e('',[{expressions:[{type:t.ATTRIBUTE,name:"class",evaluate:e=>["material-dropdown-container ",!!e.state.transition&&"opening"," ",e.props.animation||"top"].join("")}]},{type:r.IF,evaluate:e=>!e.props.items,redundantAttribute:"expr142",selector:"[expr142]",template:e('',[{type:r.SLOT,attributes:[],name:"default",redundantAttribute:"expr143",selector:"[expr143]"}])},{type:r.EACH,getKey:null,condition:null,template:e('',[{type:r.IF,evaluate:e=>!e.item.href,redundantAttribute:"expr145",selector:"[expr145]",template:e(" ",[{expressions:[{type:t.TEXT,childNodeIndex:0,evaluate:e=>[e.item.title].join("")},{type:t.ATTRIBUTE,name:"class",evaluate:e=>["material-dropdown-item ",e.props.selected===e.key?"selected":""].join("")},{type:t.ATTRIBUTE,name:"item",evaluate:e=>e.item.name||e.item.title}]}])},{type:r.IF,evaluate:e=>e.item.href,redundantAttribute:"expr146",selector:"[expr146]",template:e(" ",[{expressions:[{type:t.TEXT,childNodeIndex:0,evaluate:e=>[e.item.title].join("")},{type:t.ATTRIBUTE,name:"href",evaluate:e=>e.item.href},{type:t.ATTRIBUTE,name:"class",evaluate:e=>["material-dropdown-item ",e.props.selected===e.key?"selected":""].join("")},{type:t.ATTRIBUTE,name:"item",evaluate:e=>e.item.name||e.item.title},{type:t.ATTRIBUTE,name:"title",evaluate:e=>e.item.title}]}])}]),redundantAttribute:"expr144",selector:"[expr144]",itemName:"item",indexName:"key",evaluate:e=>e.props.items}])}]),name:"material-dropdown"},Bt=function(){function e(t){if(M(this,e),t||console.debug("Sorry, but for using validate mixin you should add an opts argument"),this.type=t.type,t.valid){if(this.validationType="function"==typeof t.valid?"Function":"Regexp","Regexp"===this.validationType)try{this.validationRegexp=new RegExp(t.valid)}catch(e){throw new Error("Something wrong with your regular expression!. Checkout --- ".concat(e))}"Function"===this.validationType&&(this.validationFunction=t.valid||!1)}else t&&-1!=Object.keys(this.base).indexOf(this.type)&&(this.validationType="Type")}return P(e,[{key:"base",get:function(){return{email:/^(([\w\.\-_]+)@[\w\-\_]+(\.\w+){1,}|)$/i,number:/^(\d+|)$/i,tel:/^((\+|\d)?([\d\-\(\)\#])|)+$/i,url:/([--:\w?@%&+~#=]*\.[a-z]{2,4}\/{0,2})((?:[?&](?:\w+)=(?:\w+))+|[--:\w?@%&+~#=]+)?/i}}},{key:"validate",value:function(e){return!this.validationType||this["validateBy"+this.validationType](e)}},{key:"validateByFunction",value:function(e){if(this.validationFunction)return this.validationFunction(e)}},{key:"validateByRegexp",value:function(e){if(this.validationRegexp)return this.validationRegexp.test(e)}},{key:"validateByType",value:function(e){return this.base[this.type].test(e)}}]),e}();const Ot=["disabled","rounded","outlined","inverted","icon"];var St={css:null,exports:{state:{focused:!1,showIcon:!1,value:"",disabled:!1,required:!1,error:!1},components:{MaterialButton:Rt},onMounted(e,t){if(this.required="",this.notSupportedTypes=["date","color","datetime","month","range","time"],-1!=this.notSupportedTypes.indexOf(this.props.type))throw new Error(`Sorry but we do not support ${this.props.type} type yet!`);this.validator=new Bt(this.props),this.update({showIcon:!1,value:this.props.value||""}),this.$("input").addEventListener("focus",this.changeFocus),this.$("input").addEventListener("blur",this.changeFocus),this.updateAttributes(e,t)},onBeforeUpdate(e,t){this.state.value=this.$("input").value,this.state.error=0!==t.value.length&&!this.validator.validate(t.value)||0===t.value.length&&wt(e.required)},onUpdated(e,t){this.updateAttributes(e,t)},updateAttributes(e,t){const r=function(e,t){return e.reduce((function(e,r){return e[r]=wt(t[r]),e}),{})}(Ot,e),a=r.inverted?e.textColor:e.color,n=r.inverted?e.color:e.textColor;It.children(this.$(".underline")).forEach((e=>e.style.background=a)),this.$("input").style.color=n,this.$("label")&&(this.$("label").style.color=e.labelColor||n),(r.outlined||r.rounded)&&(this.$(".input-content").style["border-color"]=a)},changeFocus(e){if(wt(this.props.disabled))return!1;const t=this.$("input")==document.activeElement;this.state.focused!=t&&(this.update({focused:t}),Ct(this.props.onFocus,t,e))},changeValue(e){this.update({value:this.$("input").value}),Ct(this.props.onValueChange,this.$("input").value,e)},iconClickHandler(e){Ct.call(this,this.props.onIconClick,e)},attributeToBool:wt},template:(e,t,r,a)=>e('
Mixed Content: The page at ``\n was loaded over HTTPS, but requested an insecure server endpoint ``.\n
This request may has been blocked; the content must be served over HTTPS.
\n You may unset the option `REGISTRY_URL` and set the registry server container URL in\n `NGINX_PROXY_PASS_URL`. It\'s usually the name of your container, and it should be on the shame\n network as the UI.\n
',[{redundantAttribute:"expr28",selector:"[expr28]",expressions:[{type:t.TEXT,childNodeIndex:0,evaluate:e=>["`",e.props.url,"` does not seems to be a correct URL, should starts with http:// or https://."].join("")}]}])},{type:r.IF,evaluate:e=>"PAGINATION_NUMBER_INVALID"===e.props.code,redundantAttribute:"expr29",selector:"[expr29]",template:e('
\n A default limit of 1000 images in catalog has been added in docker registry server\n v2.8.2 (May 11, 2023) and we\n cannot exceed this value without configuration.\n
\n The new default value for the UI is 1000 since\n 2.5.0 and was 100000 from\n 0.3.6.\n
Possible fixes
\n You can update the environment variable\n of your\n docker registry server or you can update your\n /etc/docker/registry/config.yml configuration of your docker registry server and add\n those lines:\n
\ncatalog:\n maxentries: \n
\n If you don\'t need that many images, you can reduce the number of elements fetch by the\n docker registry UI with the environment variable CATALOG_ELEMENTS_LIMIT=1000.\n
',[{redundantAttribute:"expr144",selector:"[expr144]",expressions:[{type:t.ATTRIBUTE,name:"class",evaluate:e=>["checkbox ",e.state.checked?"checked":""].join("")},{type:t.EVENT,name:"onclick",evaluate:e=>e.onChange}]},{redundantAttribute:"expr145",selector:"[expr145]",expressions:[{type:t.EVENT,name:"onclick",evaluate:e=>e.onChange}]},{type:r.SLOT,attributes:[],name:"default",redundantAttribute:"expr146",selector:"[expr146]"},{redundantAttribute:"expr147",selector:"[expr147]",expressions:[{type:t.VALUE,evaluate:e=>e.state.checked}]}]),name:"material-checkbox"},Ut={css:null,exports:{state:{transition:!1,opened:!1},onBeforeUpdate(e,t){t.opened!==e.opened&&(t.transition=!0,setTimeout((()=>this.update({opened:e.opened,transition:!1})),e.opened?0:200))},onUpdated(e,t){e.onClick&&this.$$(".material-dropdown-item").forEach(((e,t)=>{e.onclick=r=>{const a=e.attributes.getNamedItem("item");r.target.item=a&&a.value,r.target.index=t,Ct(this.props.onClick,r)}}))}},template:(e,t,r,a)=>e('',[{type:r.IF,evaluate:e=>e.props.opened||e.state.opened,redundantAttribute:"expr137",selector:"[expr137]",template:e('',[{expressions:[{type:t.ATTRIBUTE,name:"class",evaluate:e=>["material-dropdown-container ",!!e.state.transition&&"opening"," ",e.props.animation||"top"].join("")}]},{type:r.IF,evaluate:e=>!e.props.items,redundantAttribute:"expr138",selector:"[expr138]",template:e('',[{type:r.SLOT,attributes:[],name:"default",redundantAttribute:"expr139",selector:"[expr139]"}])},{type:r.EACH,getKey:null,condition:null,template:e('',[{type:r.IF,evaluate:e=>!e.item.href,redundantAttribute:"expr141",selector:"[expr141]",template:e(" ",[{expressions:[{type:t.TEXT,childNodeIndex:0,evaluate:e=>[e.item.title].join("")},{type:t.ATTRIBUTE,name:"class",evaluate:e=>["material-dropdown-item ",e.props.selected===e.key?"selected":""].join("")},{type:t.ATTRIBUTE,name:"item",evaluate:e=>e.item.name||e.item.title}]}])},{type:r.IF,evaluate:e=>e.item.href,redundantAttribute:"expr142",selector:"[expr142]",template:e(" ",[{expressions:[{type:t.TEXT,childNodeIndex:0,evaluate:e=>[e.item.title].join("")},{type:t.ATTRIBUTE,name:"href",evaluate:e=>e.item.href},{type:t.ATTRIBUTE,name:"class",evaluate:e=>["material-dropdown-item ",e.props.selected===e.key?"selected":""].join("")},{type:t.ATTRIBUTE,name:"item",evaluate:e=>e.item.name||e.item.title},{type:t.ATTRIBUTE,name:"title",evaluate:e=>e.item.title}]}])}]),redundantAttribute:"expr140",selector:"[expr140]",itemName:"item",indexName:"key",evaluate:e=>e.props.items}])}]),name:"material-dropdown"},Bt=function(){function e(t){if(M(this,e),t||console.debug("Sorry, but for using validate mixin you should add an opts argument"),this.type=t.type,t.valid){if(this.validationType="function"==typeof t.valid?"Function":"Regexp","Regexp"===this.validationType)try{this.validationRegexp=new RegExp(t.valid)}catch(e){throw new Error("Something wrong with your regular expression!. Checkout --- ".concat(e))}"Function"===this.validationType&&(this.validationFunction=t.valid||!1)}else t&&-1!=Object.keys(this.base).indexOf(this.type)&&(this.validationType="Type")}return P(e,[{key:"base",get:function(){return{email:/^(([\w\.\-_]+)@[\w\-\_]+(\.\w+){1,}|)$/i,number:/^(\d+|)$/i,tel:/^((\+|\d)?([\d\-\(\)\#])|)+$/i,url:/([--:\w?@%&+~#=]*\.[a-z]{2,4}\/{0,2})((?:[?&](?:\w+)=(?:\w+))+|[--:\w?@%&+~#=]+)?/i}}},{key:"validate",value:function(e){return!this.validationType||this["validateBy"+this.validationType](e)}},{key:"validateByFunction",value:function(e){if(this.validationFunction)return this.validationFunction(e)}},{key:"validateByRegexp",value:function(e){if(this.validationRegexp)return this.validationRegexp.test(e)}},{key:"validateByType",value:function(e){return this.base[this.type].test(e)}}]),e}();const Ot=["disabled","rounded","outlined","inverted","icon"];var St={css:null,exports:{state:{focused:!1,showIcon:!1,value:"",disabled:!1,required:!1,error:!1},components:{MaterialButton:Rt},onMounted(e,t){if(this.required="",this.notSupportedTypes=["date","color","datetime","month","range","time"],-1!=this.notSupportedTypes.indexOf(this.props.type))throw new Error(`Sorry but we do not support ${this.props.type} type yet!`);this.validator=new Bt(this.props),this.update({showIcon:!1,value:this.props.value||""}),this.$("input").addEventListener("focus",this.changeFocus),this.$("input").addEventListener("blur",this.changeFocus),this.updateAttributes(e,t)},onBeforeUpdate(e,t){this.state.value=this.$("input").value,this.state.error=0!==t.value.length&&!this.validator.validate(t.value)||0===t.value.length&&wt(e.required)},onUpdated(e,t){this.updateAttributes(e,t)},updateAttributes(e,t){const r=function(e,t){return e.reduce((function(e,r){return e[r]=wt(t[r]),e}),{})}(Ot,e),a=r.inverted?e.textColor:e.color,n=r.inverted?e.color:e.textColor;It.children(this.$(".underline")).forEach((e=>e.style.background=a)),this.$("input").style.color=n,this.$("label")&&(this.$("label").style.color=e.labelColor||n),(r.outlined||r.rounded)&&(this.$(".input-content").style["border-color"]=a)},changeFocus(e){if(wt(this.props.disabled))return!1;const t=this.$("input")==document.activeElement;this.state.focused!=t&&(this.update({focused:t}),Ct(this.props.onFocus,t,e))},changeValue(e){this.update({value:this.$("input").value}),Ct(this.props.onValueChange,this.$("input").value,e)},iconClickHandler(e){Ct.call(this,this.props.onIconClick,e)},attributeToBool:wt},template:(e,t,r,a)=>e('
Mixed Content: The page at ``\n was loaded over HTTPS, but requested an insecure server endpoint ``.\n
This request may has been blocked; the content must be served over HTTPS.
\n You may unset the option `REGISTRY_URL` and set the registry server container URL in\n `NGINX_PROXY_PASS_URL`. It\'s usually the name of your container, and it should be on the shame\n network as the UI.\n
',[{redundantAttribute:"expr28",selector:"[expr28]",expressions:[{type:t.TEXT,childNodeIndex:0,evaluate:e=>["`",e.props.url,"` does not seems to be a correct URL, should starts with http:// or https://."].join("")}]}])},{type:r.IF,evaluate:e=>"PAGINATION_NUMBER_INVALID"===e.props.code,redundantAttribute:"expr29",selector:"[expr29]",template:e('
\n A default limit of 1000 images in catalog has been added in docker registry server\n v2.8.2 (May 11, 2023) and we\n cannot exceed this value without configuration.\n
\n The new default value for the UI is 1000 since\n 2.5.0 and was 100000 from\n 0.3.6.\n
Possible fixes
\n You can update the environment variable\n of your\n docker registry server or you can update your\n /etc/docker/registry/config.yml configuration of your docker registry server and add\n those lines:\n
\ncatalog:\n maxentries: \n
\n If you don\'t need that many images, you can reduce the number of elements fetch by the\n docker registry UI with the environment variable CATALOG_ELEMENTS_LIMIT=1000.\n
Configuration environment variables are : CATALOG_MIN_BRANCH and CATALOG_MAX_BRANCH
',[{redundantAttribute:"expr33",selector:"[expr33]",expressions:[{type:t.TEXT,childNodeIndex:0,evaluate:e=>["Wrong configuration for the branching feature: ",e.props.message].join("")}]}])}]),name:"error-page"};const An="version-notification:latest",En="version-notification:expiration-date";var wn,Cn={css:'version-notification,[is="version-notification"]{ display: inline; } version-notification svg,[is="version-notification"] svg{ margin-left: 10px; cursor: pointer; } version-notification material-popup material-button > a:first-child,[is="version-notification"] material-popup material-button > a:first-child{ display: flex; align-items: center; } version-notification material-popup .material-popup-content code,[is="version-notification"] material-popup .material-popup-content code{ background-color: var(--hover-background); padding: 0 5px; border-radius: 4px; line-height: 1.5em; } version-notification material-popup .material-popup-content b,[is="version-notification"] material-popup .material-popup-content b{ color: var(--accent-text); }',exports:{onMounted(e,t){const r=la(localStorage.getItem(An)),a=parseInt(localStorage.getItem(En));r&&r.tag_name&&this.update({tag_name:r.tag_name,latest:r}),(isNaN(a)||(new Date).getTime()>a)&&this.checkForUpdates(e,t)},onUpdated(e,t){const r=this.$("span");r&&(r.innerHTML=(new DOMParser).parseFromString('\n',"image/svg+xml").firstElementChild.outerHTML)},onClose(){this.update({open:!1})},onClick(){this.update({open:!0})},checkForUpdates(e,t){const r=new va,a=this;r.addEventListener("load",(function(){if(localStorage.setItem(En,(new Date).getTime()+864e5),200===this.status){const t=la(this.responseText);t&&a.tag_name!==t.tag_name&&!sa(e.version,t.tag_name)&&e.onNotify("A new version of Docker Registry UI is available!"),localStorage.setItem(An,this.responseText),a.update({tag_name:t.tag_name,latest:t})}else 404!==this.status&&(e.onNotify("Cannot check for new updates. Will try again in 24 hours. See the browser console."),console.error("Cannot check for new Docker Registry UI updates. This is most likely a GitHub issue. You don't need to worry about it."),console.error(`Got status code ${this.status} from Github API with response ${this.responseText}`))})),r.open("GET","https://api.github.com/repos/joxit/docker-registry-ui/releases/latest"),r.send()},isNewestVersion:sa},template:(e,t,r,a)=>e('',[{type:r.IF,evaluate:e=>e.state.tag_name&&!e.isNewestVersion(e.props.version,e.state.tag_name),redundantAttribute:"expr34",selector:"[expr34]",template:e(null,[{expressions:[{type:t.EVENT,name:"onclick",evaluate:e=>e.onClick}]}])},{type:r.TAG,getComponent:a,evaluate:e=>"material-popup",slots:[{id:"default",html:'
',[{expressions:[{type:t.ATTRIBUTE,name:"role",evaluate:e=>"toolbar"}]},{type:r.SLOT,attributes:[],name:"default",redundantAttribute:"expr155",selector:"[expr155]"}]),name:"material-navbar"}),bt("material-spinner",{css:null,exports:null,template:(e,t,r,a)=>e('',[{redundantAttribute:"expr161",selector:"[expr161]",expressions:[{type:t.ATTRIBUTE,name:"stroke-width",evaluate:e=>e.props.strokeWidth||3}]}]),name:"material-spinner"}),bt("material-button",Rt),bt("material-waves",Et),bt("material-checkbox",Nt),bt("material-snackbar",Lt),bt("material-tabs",Mt),bt("material-dropdown",Ut),bt("material-popup",Dt),bt("material-input",St),bt("material-switch",jt);for(var On,Sn=(On=Bn,function(e,t,r){var a=void 0===r?{}:r,n=a.slots,o=a.attributes,i=a.parentScope;return function(){for(var e=arguments.length,t=new Array(e),r=0;r expires) {
+ if (isNaN(expires) || new Date().getTime() > expires) {
this.checkForUpdates(props, state);
}
},
@@ -64,16 +64,22 @@
const self = this;
oReq.addEventListener('load', function () {
+ localStorage.setItem(EXPIRES, new Date().getTime() + ONE_DAY);
if (this.status === 200) {
const latest = parseJSON(this.responseText);
if (latest && self.tag_name !== latest.tag_name && !isNewestVersion(props.version, latest.tag_name)) {
props.onNotify('A new version of Docker Registry UI is available!');
}
localStorage.setItem(LATEST, this.responseText);
- localStorage.setItem(EXPIRES, new Date().getTime() + ONE_DAY);
self.update({ tag_name: latest.tag_name, latest });
- } else {
- props.onNotify('Cannot check for new updates. See the browser console.');
+ } else if (this.status !== 404) {
+ // Should not notify if the project is not found.
+ props.onNotify('Cannot check for new updates. Will try again in 24 hours. See the browser console.');
+
+ console.error(
+ `Cannot check for new Docker Registry UI updates. This is most likely a GitHub issue. You don't need to worry about it.`
+ );
+
console.error(`Got status code ${this.status} from Github API with response ${this.responseText}`);
}
});