#254 MOSTLY DONE! At last, this took a while.

So currently if a series exists then we will correctly monitor the episodes selected.

TODO: When the series doesn't exist in sonarr we need to add the series and then wait for the episode metadata to be populated.

Also need to add in all of the regular checks  and notification e.g. whitelist etc.
This commit is contained in:
tidusjar 2016-07-24 18:02:43 +01:00
commit b14fd36ecd
21 changed files with 1380 additions and 861 deletions

View file

@ -73,7 +73,7 @@ namespace PlexRequests.UI.Helpers
if (settings.ThemeName == "PlexBootstrap.css") settings.ThemeName = Themes.PlexTheme;
if (settings.ThemeName == "OriginalBootstrap.css") settings.ThemeName = Themes.OriginalTheme;
var startUrl = $"{content}/Content_{Assembly}";
var startUrl = $"{content}/Content";
var styleAssets = new List<string>
{
@ -123,7 +123,7 @@ namespace PlexRequests.UI.Helpers
var content = GetContentUrl(assetLocation);
sb.AppendLine($"<script src=\"{content}/Content_{Assembly}/search.js\" type=\"text/javascript\"></script>");
sb.AppendLine($"<script src=\"{content}/Content/search.js\" type=\"text/javascript\"></script>");
return helper.Raw(sb.ToString());
}
@ -135,7 +135,7 @@ namespace PlexRequests.UI.Helpers
var content = GetContentUrl(assetLocation);
sb.AppendLine($"<script src=\"{content}/Content_{Assembly}/requests.js\" type=\"text/javascript\"></script>");
sb.AppendLine($"<script src=\"{content}/Content/requests.js\" type=\"text/javascript\"></script>");
return helper.Raw(sb.ToString());
}
@ -147,7 +147,7 @@ namespace PlexRequests.UI.Helpers
var content = GetContentUrl(assetLocation);
sb.AppendLine($"<script src=\"{content}/Content_{Assembly}/issues.js\" type=\"text/javascript\"></script>");
sb.AppendLine($"<script src=\"{content}/Content/issues.js\" type=\"text/javascript\"></script>");
return helper.Raw(sb.ToString());
}
@ -157,7 +157,7 @@ namespace PlexRequests.UI.Helpers
var assetLocation = GetBaseUrl();
var content = GetContentUrl(assetLocation);
var asset = $"<script src=\"{content}/Content_{Assembly}/issue-details.js\" type=\"text/javascript\"></script>";
var asset = $"<script src=\"{content}/Content/issue-details.js\" type=\"text/javascript\"></script>";
return helper.Raw(asset);
}
@ -169,8 +169,8 @@ namespace PlexRequests.UI.Helpers
var content = GetContentUrl(assetLocation);
sb.AppendLine($"<script src=\"{content}/Content_{Assembly}/datatables.min.js\" type=\"text/javascript\"></script>");
sb.AppendLine($"<link rel=\"stylesheet\" type=\"text/css\" href=\"{content}/Content_{Assembly}/dataTables.bootstrap.css\" />");
sb.AppendLine($"<script src=\"{content}/Content/datatables.min.js\" type=\"text/javascript\"></script>");
sb.AppendLine($"<link rel=\"stylesheet\" type=\"text/css\" href=\"{content}/Content/dataTables.bootstrap.css\" />");
return helper.Raw(sb.ToString());
}
@ -186,7 +186,7 @@ namespace PlexRequests.UI.Helpers
var assetLocation = GetBaseUrl();
var content = GetContentUrl(assetLocation);
var asset = $"<script src=\"{content}/Content_{Assembly}/analytics.js\" type=\"text/javascript\"></script>";
var asset = $"<script src=\"{content}/Content/analytics.js\" type=\"text/javascript\"></script>";
return helper.Raw(asset);
}

View file

@ -44,24 +44,34 @@ namespace PlexRequests.UI.Helpers
/// </summary>
public IEnumerable<IBinding> Resolve(Multimap<Type, IBinding> bindings, Type service)
{
Debug.WriteLine("Contrar thing");
if (service.IsGenericType)
{
var genericType = service.GetGenericTypeDefinition();
var genericArguments = genericType.GetGenericArguments();
if (!genericArguments.Any())
{
return Enumerable.Empty<IBinding>();
}
if (!genericArguments.Any())
{
return Enumerable.Empty<IBinding>();
}
if (genericArguments.Length == 1 && genericArguments.Single().GenericParameterAttributes.HasFlag(GenericParameterAttributes.Contravariant))
{
var argument = service.GetGenericArguments().Single();
var argument = service.GetGenericArguments().FirstOrDefault();
if (argument == null)
{
return Enumerable.Empty<IBinding>();
}
var matches =
bindings.Where(
kvp =>
kvp.Key.IsGenericType && kvp.Key.GetGenericTypeDefinition() == genericType && kvp.Key.GetGenericArguments().Single() != argument
&& kvp.Key.GetGenericArguments().Single().IsAssignableFrom(argument)).SelectMany(kvp => kvp.Value);
{
var assignableFrom = kvp.Key.GetGenericArguments().FirstOrDefault();
return kvp.Key.IsGenericType && kvp.Key.GetGenericTypeDefinition() == genericType &&
kvp.Key.GetGenericArguments().FirstOrDefault() != argument
&& assignableFrom.IsAssignableFrom(argument);
}).SelectMany(kvp => kvp.Value);
return matches;
}
}