diff --git a/Kyoo.CommonAPI/LocalRepository.cs b/Kyoo.CommonAPI/LocalRepository.cs index 67442f12..cfc1325a 100644 --- a/Kyoo.CommonAPI/LocalRepository.cs +++ b/Kyoo.CommonAPI/LocalRepository.cs @@ -69,16 +69,20 @@ namespace Kyoo.Controllers { if (where != null) query = query.Where(where); - + Expression> sortKey = sort.Key ?? defaultSort; + Expression sortExpression = sortKey.Body.NodeType == ExpressionType.Convert + ? ((UnaryExpression)sortKey.Body).Operand + : sortKey.Body; + + if (typeof(Enum).IsAssignableFrom(sortExpression.Type)) + throw new ArgumentException("Invalid sort key."); + query = sort.Descendant ? query.OrderByDescending(sortKey) : query.OrderBy(sortKey); if (limit.AfterID != 0) { TValue after = await get(limit.AfterID); - Expression sortExpression = sortKey.Body.NodeType == ExpressionType.Convert - ? ((UnaryExpression)sortKey.Body).Operand - : sortKey.Body; Expression key = Expression.Constant(sortKey.Compile()(after), sortExpression.Type); query = query.Where(Expression.Lambda>( ApiHelper.StringCompatibleExpression(Expression.GreaterThan, sortExpression, key), diff --git a/Kyoo/Views/WebClient b/Kyoo/Views/WebClient index 45afdbb4..d692f9f3 160000 --- a/Kyoo/Views/WebClient +++ b/Kyoo/Views/WebClient @@ -1 +1 @@ -Subproject commit 45afdbb44ed28b5ee408923b6d4d13534e284517 +Subproject commit d692f9f3d364d7d2748205374a3a84fb1fd4a938