Compare commits

..

1 Commits

Author SHA1 Message Date
Mark McDowall
e739a93a2a Fixed: Loading calendar on older browsers
(cherry picked from commit edfc12e27a00fd927df0de6ccb3961efe8f5dc3b)
2024-12-17 05:02:57 +00:00
5 changed files with 36 additions and 39 deletions

View File

@@ -9,7 +9,7 @@ variables:
testsFolder: './_tests' testsFolder: './_tests'
yarnCacheFolder: $(Pipeline.Workspace)/.yarn yarnCacheFolder: $(Pipeline.Workspace)/.yarn
nugetCacheFolder: $(Pipeline.Workspace)/.nuget/packages nugetCacheFolder: $(Pipeline.Workspace)/.nuget/packages
majorVersion: '0.4.7' majorVersion: '0.4.6'
minorVersion: $[counter('minorVersion', 1)] minorVersion: $[counter('minorVersion', 1)]
readarrVersion: '$(majorVersion).$(minorVersion)' readarrVersion: '$(majorVersion).$(minorVersion)'
buildName: '$(Build.SourceBranchName).$(readarrVersion)' buildName: '$(Build.SourceBranchName).$(readarrVersion)'

View File

@@ -8,6 +8,7 @@ window.console.debug = window.console.debug || function() {};
window.console.warn = window.console.warn || function() {}; window.console.warn = window.console.warn || function() {};
window.console.assert = window.console.assert || function() {}; window.console.assert = window.console.assert || function() {};
// TODO: Remove in v5, well suppoprted in browsers
if (!String.prototype.startsWith) { if (!String.prototype.startsWith) {
Object.defineProperty(String.prototype, 'startsWith', { Object.defineProperty(String.prototype, 'startsWith', {
enumerable: false, enumerable: false,
@@ -20,6 +21,7 @@ if (!String.prototype.startsWith) {
}); });
} }
// TODO: Remove in v5, well suppoprted in browsers
if (!String.prototype.endsWith) { if (!String.prototype.endsWith) {
Object.defineProperty(String.prototype, 'endsWith', { Object.defineProperty(String.prototype, 'endsWith', {
enumerable: false, enumerable: false,
@@ -34,8 +36,14 @@ if (!String.prototype.endsWith) {
}); });
} }
// TODO: Remove in v5, use `includes` instead
if (!('contains' in String.prototype)) { if (!('contains' in String.prototype)) {
String.prototype.contains = function(str, startIndex) { String.prototype.contains = function(str, startIndex) {
return String.prototype.indexOf.call(this, str, startIndex) !== -1; return String.prototype.indexOf.call(this, str, startIndex) !== -1;
}; };
} }
// For Firefox ESR 115 support
if (!Object.groupBy) {
import('core-js/actual/object/group-by');
}

View File

@@ -42,18 +42,17 @@ namespace NzbDrone.Common
public void CreateZip(string path, IEnumerable<string> files) public void CreateZip(string path, IEnumerable<string> files)
{ {
_logger.Debug("Creating archive {0}", path); using (var zipFile = ZipFile.Create(path))
using var zipFile = ZipFile.Create(path);
zipFile.BeginUpdate();
foreach (var file in files)
{ {
zipFile.Add(file, Path.GetFileName(file)); zipFile.BeginUpdate();
}
zipFile.CommitUpdate(); foreach (var file in files)
{
zipFile.Add(file, Path.GetFileName(file));
}
zipFile.CommitUpdate();
}
} }
private void ExtractZip(string compressedFile, string destination) private void ExtractZip(string compressedFile, string destination)

View File

@@ -66,19 +66,12 @@ namespace NzbDrone.Core.Backup
{ {
_logger.ProgressInfo("Starting Backup"); _logger.ProgressInfo("Starting Backup");
var backupFolder = GetBackupFolder(backupType);
_diskProvider.EnsureFolder(_backupTempFolder); _diskProvider.EnsureFolder(_backupTempFolder);
_diskProvider.EnsureFolder(backupFolder); _diskProvider.EnsureFolder(GetBackupFolder(backupType));
if (!_diskProvider.FolderWritable(backupFolder))
{
throw new UnauthorizedAccessException($"Backup folder {backupFolder} is not writable");
}
var dateNow = DateTime.Now; var dateNow = DateTime.Now;
var backupFilename = $"readarr_backup_v{BuildInfo.Version}_{dateNow:yyyy.MM.dd_HH.mm.ss}.zip"; var backupFilename = $"readarr_backup_v{BuildInfo.Version}_{dateNow:yyyy.MM.dd_HH.mm.ss}.zip";
var backupPath = Path.Combine(backupFolder, backupFilename); var backupPath = Path.Combine(GetBackupFolder(backupType), backupFilename);
Cleanup(); Cleanup();

View File

@@ -4,7 +4,6 @@ using System.Net;
using Newtonsoft.Json.Linq; using Newtonsoft.Json.Linq;
using NLog; using NLog;
using NzbDrone.Common.Cache; using NzbDrone.Common.Cache;
using NzbDrone.Common.EnvironmentInfo;
using NzbDrone.Common.Extensions; using NzbDrone.Common.Extensions;
using NzbDrone.Common.Http; using NzbDrone.Common.Http;
using NzbDrone.Common.Serializer; using NzbDrone.Common.Serializer;
@@ -209,7 +208,7 @@ namespace NzbDrone.Core.Download.Clients.Transmission
private void AuthenticateClient(HttpRequestBuilder requestBuilder, TransmissionSettings settings, bool reauthenticate = false) private void AuthenticateClient(HttpRequestBuilder requestBuilder, TransmissionSettings settings, bool reauthenticate = false)
{ {
var authKey = $"{requestBuilder.BaseUrl}:{settings.Password}"; var authKey = string.Format("{0}:{1}", requestBuilder.BaseUrl, settings.Password);
var sessionId = _authSessionIDCache.Find(authKey); var sessionId = _authSessionIDCache.Find(authKey);
@@ -221,26 +220,24 @@ namespace NzbDrone.Core.Download.Clients.Transmission
authLoginRequest.SuppressHttpError = true; authLoginRequest.SuppressHttpError = true;
var response = _httpClient.Execute(authLoginRequest); var response = _httpClient.Execute(authLoginRequest);
if (response.StatusCode == HttpStatusCode.MovedPermanently)
switch (response.StatusCode)
{ {
case HttpStatusCode.MovedPermanently: var url = response.Headers.GetSingleValue("Location");
var url = response.Headers.GetSingleValue("Location");
throw new DownloadClientException("Remote site redirected to " + url); throw new DownloadClientException("Remote site redirected to " + url);
case HttpStatusCode.Forbidden: }
throw new DownloadClientException($"Failed to authenticate with Transmission. It may be necessary to add {BuildInfo.AppName}'s IP address to RPC whitelist."); else if (response.StatusCode == HttpStatusCode.Conflict)
case HttpStatusCode.Conflict: {
sessionId = response.Headers.GetSingleValue("X-Transmission-Session-Id"); sessionId = response.Headers.GetSingleValue("X-Transmission-Session-Id");
if (sessionId == null) if (sessionId == null)
{ {
throw new DownloadClientException("Remote host did not return a Session Id."); throw new DownloadClientException("Remote host did not return a Session Id.");
} }
}
break; else
default: {
throw new DownloadClientAuthenticationException("Failed to authenticate with Transmission."); throw new DownloadClientAuthenticationException("Failed to authenticate with Transmission.");
} }
_logger.Debug("Transmission authentication succeeded."); _logger.Debug("Transmission authentication succeeded.");