瀏覽代碼

Back to menu and select author commands
unlimited stickers flag (choosen result may be not working)

Tigran 4 年之前
父節點
當前提交
7be174cd0f

+ 4 - 3
CardCollector/Commands/Custom/BackToFiltersMenu.cs → CardCollector/Commands/CallbackQuery/BackToFiltersMenu.cs

@@ -4,11 +4,11 @@ using CardCollector.DataBase.Entity;
 using CardCollector.Resources;
 using Telegram.Bot.Types;
 
-namespace CardCollector.Commands.Custom
+namespace CardCollector.Commands.CallbackQuery
 {
-    public class BackToFiltersMenu : CallbackQuery.CallbackQuery
+    public class BackToFiltersMenu : CallbackQuery
     {
-        protected override string Command => "CallbackQuery";
+        protected override string Command => CallbackQueryCommands.back;
         public override async Task Execute()
         {
             /* Формируем сообщение с имеющимися фильтрами у пользователя */
@@ -23,6 +23,7 @@ namespace CardCollector.Commands.Custom
             await MessageController.EditMessage(User, CallbackMessageId, text, Keyboard.SortingOptions);
         }
         
+        public BackToFiltersMenu() { }
         public BackToFiltersMenu(UserEntity user, Update update) : base(user, update) { }
     }
 }

+ 5 - 0
CardCollector/Commands/CallbackQuery/CallbackQuery.cs

@@ -30,6 +30,11 @@ namespace CardCollector.Commands.CallbackQuery
         {
             /* Кнопка "Автор" */
             new AuthorCallback(),
+            /* Выбор автора из списка */
+            new SelectAuthorCallback(),
+            
+            /* Отмена в момент выбора "значения фильтра", не в самом меню */
+            new BackToFiltersMenu(),
         };
 
         /* Метод, создающий объекты команд исходя из полученного обновления */

+ 21 - 0
CardCollector/Commands/CallbackQuery/SelectAuthorCallback.cs

@@ -0,0 +1,21 @@
+using System.Threading.Tasks;
+using CardCollector.DataBase.Entity;
+using CardCollector.Resources;
+using Telegram.Bot.Types;
+
+namespace CardCollector.Commands.CallbackQuery
+{
+    public class SelectAuthorCallback : CallbackQuery
+    {
+        protected override string Command => CallbackQueryCommands.author_callback;
+        public override async Task Execute()
+        {
+            var result = CallbackData.Split('=')[1];
+            User.Filters["author"] = result;
+            await new BackToFiltersMenu(User, Update).Execute();
+        }
+        
+        public SelectAuthorCallback() { }
+        public SelectAuthorCallback(UserEntity user, Update update) : base (user, update) { }
+    }
+}

+ 17 - 9
CardCollector/DataBase/Entity/UserEntity.cs

@@ -66,17 +66,25 @@ namespace CardCollector.DataBase.Entity
         public async Task<IEnumerable<InlineQueryResult>> GetStickersList(string command, string filter)
         {
             var result = new List<InlineQueryResult>();
-            foreach (var sticker in Stickers.Values.Where(i => i.Count > 0))
-            {
-                if (filter != "")
+            if (Constants.UNLIMITED_ALL_STICKERS)
+                foreach (var sticker in await StickerDao.GetAll())
                 {
-                    var stickerInfo = await StickerDao.GetStickerInfo(sticker.StickerId);
-                    if (!stickerInfo.Title.Contains(filter)) break;
+                    var item = new InlineQueryResultCachedSticker($"unlimited_sticker={sticker.Title}", sticker.Id);
+                    result.Add(item);
+                    if (result.Count > 49) return result;
+                }
+            else
+                foreach (var sticker in Stickers.Values.Where(i => i.Count > 0))
+                {
+                    if (filter != "")
+                    {
+                        var stickerInfo = await StickerDao.GetStickerInfo(sticker.StickerId);
+                        if (!stickerInfo.Title.Contains(filter)) break;
+                    }
+                    var item = new InlineQueryResultCachedSticker($"{command}={sticker.ShortHash}", sticker.StickerId);
+                    result.Add(item);
+                    if (result.Count > 49) return result;
                 }
-                var item = new InlineQueryResultCachedSticker($"{command}={sticker.ShortHash}", sticker.StickerId);
-                result.Add(item);
-                if (result.Count > 49) return result;
-            }
             return result;
         }
     }

+ 5 - 0
CardCollector/DataBase/EntityDao/StickerDao.cs

@@ -48,5 +48,10 @@ namespace CardCollector.DataBase.EntityDao
                 .Distinct()
                 .ToListAsync();
         }
+
+        public static async Task<List<StickerEntity>> GetAll()
+        {
+            return await Table.ToListAsync();
+        }
     }
 }

+ 9 - 18
CardCollector/Resources/CallbackQueryCommands.Designer.cs

@@ -105,6 +105,15 @@ namespace CardCollector.Resources {
             }
         }
         
+        /// <summary>
+        ///   Looks up a localized string similar to change_page.
+        /// </summary>
+        internal static string change_page {
+            get {
+                return ResourceManager.GetString("change_page", resourceCulture);
+            }
+        }
+        
         /// <summary>
         ///   Looks up a localized string similar to Собрать прибыль.
         /// </summary>
@@ -141,15 +150,6 @@ namespace CardCollector.Resources {
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to next.
-        /// </summary>
-        internal static string next_callback {
-            get {
-                return ResourceManager.GetString("next_callback", resourceCulture);
-            }
-        }
-        
         /// <summary>
         ///   Looks up a localized string similar to ←.
         /// </summary>
@@ -159,15 +159,6 @@ namespace CardCollector.Resources {
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to previous.
-        /// </summary>
-        internal static string previous_callback {
-            get {
-                return ResourceManager.GetString("previous_callback", resourceCulture);
-            }
-        }
-        
         /// <summary>
         ///   Looks up a localized string similar to Показать стикеры.
         /// </summary>

+ 2 - 5
CardCollector/Resources/CallbackQueryCommands.resx

@@ -63,10 +63,7 @@
     <data name="next" xml:space="preserve">
         <value>→</value>
     </data>
-    <data name="previous_callback" xml:space="preserve">
-        <value>previous</value>
-    </data>
-    <data name="next_callback" xml:space="preserve">
-        <value>next</value>
+    <data name="change_page" xml:space="preserve">
+        <value>change_page</value>
     </data>
 </root>

+ 2 - 0
CardCollector/Resources/Constants.cs

@@ -9,6 +9,8 @@ namespace CardCollector.Resources
         public const double SAVING_CHANGES_INTERVAL = DEBUG ? 10 * 1000 : 5 * 60 * 1000;
         /* Время кэширования результатов @имя_бота команд */
         public const int INLINE_RESULTS_CACHE_TIME = 1;
+        /* Включает бесконечные стикеры без наличия их в коллекции */
+        public const bool UNLIMITED_ALL_STICKERS = DEBUG;
 
 
         /* Уровни привилегий пользователей системы */

+ 5 - 5
CardCollector/Resources/Keyboard.cs

@@ -46,7 +46,7 @@ namespace CardCollector.Resources
                 {
                     /* Добавляем в список кнопку "Все" */
                     InlineKeyboardButton.WithCallbackData(CallbackQueryCommands.All,
-                        $"{CallbackQueryCommands.author_callback}={CallbackQueryCommands.All}")
+                        $"{CallbackQueryCommands.author_callback}=")
                 }
             };
             /* Копируем список */
@@ -81,19 +81,19 @@ namespace CardCollector.Resources
                         <10 => new[]
                         {
                             InlineKeyboardButton.WithCallbackData(CallbackQueryCommands.previous,
-                                $"{CallbackQueryCommands.previous_callback}={page - 1}")
+                                $"{CallbackQueryCommands.change_page}={page - 1}")
                         },
                         >=10 when page == 1 => new[]
                         {
                             InlineKeyboardButton.WithCallbackData(CallbackQueryCommands.next,
-                                $"{CallbackQueryCommands.next_callback}={page + 1}")
+                                $"{CallbackQueryCommands.change_page}={page + 1}")
                         },
                         _ => new[]
                         {
                             InlineKeyboardButton.WithCallbackData(CallbackQueryCommands.previous,
-                                $"{CallbackQueryCommands.previous_callback}={page - 1}"),
+                                $"{CallbackQueryCommands.change_page}={page - 1}"),
                             InlineKeyboardButton.WithCallbackData(CallbackQueryCommands.next,
-                                $"{CallbackQueryCommands.next_callback}={page + 1}")
+                                $"{CallbackQueryCommands.change_page}={page + 1}")
                         }
                     }
                 );