mirror of
				https://github.com/SoPat712/YTLitePlus.git
				synced 2025-10-31 04:44:14 -04:00 
			
		
		
		
	added files via upload
This commit is contained in:
		
							
								
								
									
										104
									
								
								Tweaks/FLEX/Network/FLEXMITMDataSource.m
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										104
									
								
								Tweaks/FLEX/Network/FLEXMITMDataSource.m
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,104 @@ | ||||
| // | ||||
| //  FLEXMITMDataSource.m | ||||
| //  FLEX | ||||
| // | ||||
| //  Created by Tanner Bennett on 8/22/21. | ||||
| // | ||||
|  | ||||
| #import "FLEXMITMDataSource.h" | ||||
| #import "FLEXNetworkTransaction.h" | ||||
| #import "FLEXUtility.h" | ||||
|  | ||||
| @interface FLEXMITMDataSource () | ||||
| @property (nonatomic, readonly) NSArray *(^dataProvider)(void); | ||||
| @property (nonatomic) NSString *filterString; | ||||
| @end | ||||
|  | ||||
| @implementation FLEXMITMDataSource | ||||
|  | ||||
| + (instancetype)dataSourceWithProvider:(NSArray<id> *(^)(void))future { | ||||
|     FLEXMITMDataSource *ds = [self new]; | ||||
|     ds->_dataProvider = future; | ||||
|     [ds reloadData:nil]; | ||||
|      | ||||
|     return ds; | ||||
| } | ||||
|  | ||||
| - (BOOL)isFiltered { | ||||
|     return self.filterString.length > 0; | ||||
| } | ||||
|  | ||||
| - (void)reloadByteCounts { | ||||
|     [self updateBytesReceived]; | ||||
|     [self updateFilteredBytesReceived]; | ||||
| } | ||||
|  | ||||
| - (void)reloadData:(void (^)(FLEXMITMDataSource *dataSource))completion { | ||||
|     self.allTransactions = self.dataProvider(); | ||||
|     [self filter:self.filterString completion:completion]; | ||||
| } | ||||
|  | ||||
| - (void)filter:(NSString *)searchString completion:(void (^)(FLEXMITMDataSource *dataSource))completion { | ||||
|     self.filterString = searchString; | ||||
|      | ||||
|     if (!searchString.length) { | ||||
|         self.filteredTransactions = self.allTransactions; | ||||
|         if (completion) completion(self); | ||||
|     } else { | ||||
|         NSArray<FLEXNetworkTransaction *> *allTransactions = self.allTransactions.copy; | ||||
|         [self onBackgroundQueue:^NSArray *{ | ||||
|             return [allTransactions flex_filtered:^BOOL(FLEXNetworkTransaction *entry, NSUInteger idx) { | ||||
|                 return [entry matchesQuery:searchString]; | ||||
|             }]; | ||||
|         } thenOnMainQueue:^(NSArray *filteredNetworkTransactions) { | ||||
|             if ([self.filterString isEqual:searchString]) { | ||||
|                 self.filteredTransactions = filteredNetworkTransactions; | ||||
|                 if (completion) completion(self); | ||||
|             } | ||||
|         }]; | ||||
|     } | ||||
| } | ||||
|  | ||||
| - (void)setAllTransactions:(NSArray *)transactions { | ||||
|     _allTransactions = transactions.copy; | ||||
|     [self updateBytesReceived]; | ||||
| } | ||||
|  | ||||
| /// This is really just a semantic setter for \c _transactions | ||||
| - (void)setFilteredTransactions:(NSArray *)filteredTransactions { | ||||
|     _transactions = filteredTransactions.copy; | ||||
|     [self updateFilteredBytesReceived]; | ||||
| } | ||||
|  | ||||
| - (void)setTransactions:(NSArray *)transactions { | ||||
|     self.filteredTransactions = transactions; | ||||
| } | ||||
|  | ||||
| - (void)updateBytesReceived { | ||||
|     NSInteger bytesReceived = 0; | ||||
|     for (FLEXNetworkTransaction *transaction in self.transactions) { | ||||
|         bytesReceived += transaction.receivedDataLength; | ||||
|     } | ||||
|      | ||||
|     self.bytesReceived = bytesReceived; | ||||
| } | ||||
|  | ||||
| - (void)updateFilteredBytesReceived { | ||||
|     NSInteger filteredBytesReceived = 0; | ||||
|     for (FLEXNetworkTransaction *transaction in self.transactions) { | ||||
|         filteredBytesReceived += transaction.receivedDataLength; | ||||
|     } | ||||
|      | ||||
|     self.bytesReceived = filteredBytesReceived; | ||||
| } | ||||
|  | ||||
| - (void)onBackgroundQueue:(NSArray *(^)(void))backgroundBlock thenOnMainQueue:(void(^)(NSArray *))mainBlock { | ||||
|     dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ | ||||
|         NSArray *items = backgroundBlock(); | ||||
|         dispatch_async(dispatch_get_main_queue(), ^{ | ||||
|             mainBlock(items); | ||||
|         }); | ||||
|     }); | ||||
| } | ||||
|  | ||||
| @end | ||||
		Reference in New Issue
	
	Block a user
	 Balackburn
					Balackburn