using NeDvachAPI.DBControllers; using NeDvachAPI.Models; namespace NeDvachAPI.BufferControllers { public class APIThreadBuffer { private static List[] ThreadsPrewievs = new List[0]; private static List[] Threads = new List[0]; public static void WriteThreadPreviewsBuffer(List OPPostsToWrite) //add list of OP-posts and last post to buffer { for(int pos = 0; pos < OPPostsToWrite.Count; pos ++) { var deb = new List(); deb.Add(OPPostsToWrite[pos]); ThreadsPrewievs = ThreadsPrewievs.Append(deb).ToArray(); } } public static void AppendToThreadPreviews(int index,Post toAppend) { ThreadsPrewievs[index].Add(toAppend); } public static List[] GetThreadPreviews() { return ThreadsPrewievs; } public static void UpdateThreadsPreviews(int threadId) { Console.WriteLine("Пытаюсь обновить превью треда " + threadId); var newPreview = new List(); newPreview.Add(ThreadsPrewievs[threadId -1][0]); int targetLength = APIThreadBuffer.GetThreadLength(threadId - 1); for (int lastofthree = targetLength- 2; lastofthree <= targetLength; lastofthree ++) { newPreview.Add(GetSinglePost(threadId - 1,lastofthree)); } ThreadsPrewievs[threadId -1] = newPreview; } public static void AppendThreadsBuffer(List ThreadToAdd) //add thread's posts from DB to buffer { Threads = Threads.Append(ThreadToAdd).ToArray(); } public static int GetThreadLength(int threadId) { return Threads[threadId].Count; } public static List GetThread(int threadId) { if (threadId < Threads.Length + 1 & threadId != 0) { return Threads[threadId - 1]; } else return null; } public static Post GetSinglePost(int thread, int postPosition) { List postsList = Threads[thread]; return postsList[postPosition-1]; } public static void UpdateThreadPosts(int threadId) { Console.WriteLine("Пытаюсь обновить тред " + threadId); Threads[threadId - 1] = DBchat.PostsList("b", threadId); } public static void RefreshThread(int threadId) { UpdateThreadPosts(threadId); UpdateThreadsPreviews(threadId); } } }