Browse Source

Fix Apollo bug, add prefs, update Narwhal menu

master
lint 5 years ago
parent
commit
8a91513680
15 changed files with 219 additions and 155 deletions
  1. +5
    -1
      Makefile
  2. +1
    -1
      control
  3. +17
    -0
      prefs/Makefile
  4. +24
    -0
      prefs/Resources/Info.plist
  5. +29
    -0
      prefs/Resources/Root.plist
  6. BIN
      prefs/Resources/icon.png
  7. BIN
      prefs/Resources/icon@2x.png
  8. BIN
      prefs/Resources/icon@3x.png
  9. +5
    -0
      prefs/TFDTSRootListController.h
  10. +13
    -0
      prefs/TFDTSRootListController.m
  11. +21
    -0
      prefs/entry.plist
  12. BIN
      tfdidthatsay.plist
  13. +2
    -3
      tweak/Apollo.h
  14. +49
    -26
      tweak/Apollo.xm
  15. +53
    -124
      tweak/Narwhal.xm

+ 5
- 1
Makefile View File



include $(THEOS_MAKE_PATH)/tweak.mk include $(THEOS_MAKE_PATH)/tweak.mk


SUBPROJECTS += prefs
include $(THEOS_MAKE_PATH)/aggregate.mk


after-install:: after-install::
install.exec "killall -9 Reddit" install.exec "killall -9 Reddit"
install.exec "killall -9 Apollo" install.exec "killall -9 Apollo"
install.exec "killall -9 narwhal"
install.exec "killall -9 narwhal"

+ 1
- 1
control View File

Package: com.lint.undelete Package: com.lint.undelete
Name: TFDidThatSay? Name: TFDidThatSay?
Depends: mobilesubstrate Depends: mobilesubstrate
Version: 1.2.2
Version: 1.2.3
Architecture: iphoneos-arm Architecture: iphoneos-arm
Description: See "[deleted]" comments and posts without leaving Reddit! Description: See "[deleted]" comments and posts without leaving Reddit!
Maintainer: lint <apieceoflint@protonmail.com> Maintainer: lint <apieceoflint@protonmail.com>

+ 17
- 0
prefs/Makefile View File

include $(THEOS)/makefiles/common.mk

ARCHS = arm64 arm64e

BUNDLE_NAME = TFDidThatSayPrefs

TFDidThatSayPrefs_FILES = TFDTSRootListController.m
TFDidThatSayPrefs_INSTALL_PATH = /Library/PreferenceBundles
TFDidThatSayPrefs_FRAMEWORKS = UIKit
TFDidThatSayPrefs_PRIVATE_FRAMEWORKS = Preferences
TFDidThatSayPrefs_CFLAGS = -fobjc-arc

include $(THEOS_MAKE_PATH)/bundle.mk

internal-stage::
$(ECHO_NOTHING)mkdir -p $(THEOS_STAGING_DIR)/Library/PreferenceLoader/Preferences$(ECHO_END)
$(ECHO_NOTHING)cp entry.plist $(THEOS_STAGING_DIR)/Library/PreferenceLoader/Preferences/TFDidThatSayPrefs.plist$(ECHO_END)

+ 24
- 0
prefs/Resources/Info.plist View File

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleExecutable</key>
<string>TFDidThatSayPrefs</string>
<key>CFBundleIdentifier</key>
<string>com.lint.undelete.prefs</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundlePackageType</key>
<string>BNDL</string>
<key>CFBundleShortVersionString</key>
<string>1.0.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1.0</string>
<key>NSPrincipalClass</key>
<string>TFDTSRootListController</string>
</dict>
</plist>

+ 29
- 0
prefs/Resources/Root.plist View File

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>items</key>
<array>
<dict>
<key>cell</key>
<string>PSGroupCell</string>
<key>label</key>
<string>Apollo </string>
</dict>
<dict>
<key>cell</key>
<string>PSSwitchCell</string>
<key>default</key>
<true/>
<key>defaults</key>
<string>com.lint.undelete.prefs</string>
<key>key</key>
<string>isApolloDeletedCommentsOnly</string>
<key>label</key>
<string>Only display eye on deleted comments</string>
</dict>
</array>
<key>title</key>
<string>TFDidThatSay?</string>
</dict>
</plist>

BIN
prefs/Resources/icon.png View File

Before After
Width: 29  |  Height: 29  |  Size: 3.2KB

BIN
prefs/Resources/icon@2x.png View File

Before After
Width: 58  |  Height: 58  |  Size: 3.7KB

BIN
prefs/Resources/icon@3x.png View File

Before After
Width: 87  |  Height: 87  |  Size: 4.2KB

+ 5
- 0
prefs/TFDTSRootListController.h View File

#import <Preferences/PSListController.h>

@interface TFDTSRootListController : PSListController

@end

+ 13
- 0
prefs/TFDTSRootListController.m View File

#include "TFDTSRootListController.h"

@implementation TFDTSRootListController

- (NSArray *)specifiers {
if (!_specifiers) {
_specifiers = [self loadSpecifiersFromPlistName:@"Root" target:self];
}

return _specifiers;
}

@end

+ 21
- 0
prefs/entry.plist View File

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>entry</key>
<dict>
<key>bundle</key>
<string>TFDidThatSayPrefs</string>
<key>cell</key>
<string>PSLinkCell</string>
<key>detail</key>
<string>TFDTSRootListController</string>
<key>icon</key>
<string>icon.png</string>
<key>isController</key>
<true/>
<key>label</key>
<string>TFDidThatSay?</string>
</dict>
</dict>
</plist>

BIN
tfdidthatsay.plist View File


+ 2
- 3
tweak/Apollo.h View File

-(void) calculatedLayoutDidChange; -(void) calculatedLayoutDidChange;
//custom element //custom element
@property(assign,nonatomic) id undeleteButton;
@property(strong,nonatomic) id undeleteButton;
@end @end
/* -- Post Interfaces -- */ /* -- Post Interfaces -- */
@end @end
@interface ApolloCommentsHeaderCellNode @interface ApolloCommentsHeaderCellNode
@property(assign, nonatomic) id undeleteButton;
@property(strong, nonatomic) id undeleteButton;
@end @end
/* -- Other Interfaces -- */ /* -- Other Interfaces -- */

+ 49
- 26
tweak/Apollo.xm View File

%group Apollo %group Apollo
%hook ApolloApolloButtonNode
%end
const NSDictionary* settings = [[NSDictionary alloc] initWithContentsOfFile:@"/var/mobile/Library/Preferences/com.lint.undelete.prefs.plist"];
NSDictionary* apolloBodyAttributes = nil; NSDictionary* apolloBodyAttributes = nil;
%hook ApolloApolloButtonNode
%end
%hook RKComment %hook RKComment
-(BOOL) isDeleted{ -(BOOL) isDeleted{
return NO; return NO;
} }
-(BOOL) isModeratorRemoved{
return NO;
}
%end %end
%hook ApolloCommentCellNode %hook ApolloCommentCellNode
%property(assign,nonatomic) id undeleteButton;
%property(strong,nonatomic) id undeleteButton;
%new %new
-(void) didTapUndeleteButton{
-(void) didTapUndeleteButton:(id) sender{
[sender setEnabled:NO];
id bodyNode = MSHookIvar<id>(self, "bodyNode"); id bodyNode = MSHookIvar<id>(self, "bodyNode");
id authorNode = MSHookIvar<id>(self, "authorNode"); id authorNode = MSHookIvar<id>(self, "authorNode");
[bodyNode setAttributedString:[%c(MarkdownRenderer) attributedStringFromMarkdown:body withAttributes:apolloBodyAttributes]]; [bodyNode setAttributedString:[%c(MarkdownRenderer) attributedStringFromMarkdown:body withAttributes:apolloBodyAttributes]];
[sender setEnabled:YES];
}]; }];
} }
-(void) didLoad { -(void) didLoad {
%orig; %orig;
CGFloat imageSize = 20.0f;
UIButton *undeleteButton = [UIButton buttonWithType:UIButtonTypeCustom];
[undeleteButton addTarget:self action:@selector(didTapUndeleteButton) forControlEvents:UIControlEventTouchUpInside];
undeleteButton.frame = CGRectMake(0, 0, imageSize, imageSize);
id commentBody = [MSHookIvar<id>(self, "comment") body];
id isDeletedOnly = [settings valueForKey:@"isApolloDeletedCommentsOnly"];
if (([isDeletedOnly isEqual:@1] && ([commentBody isEqualToString:@"[deleted]"] || [commentBody isEqualToString:@"[removed]"])) || [isDeletedOnly isEqual:@0] ) {
UIImage* undeleteImage = [UIImage imageWithContentsOfFile:@"/var/mobile/Library/Application Support/TFDidThatSay/eye160dark.png"];
[undeleteButton setImage:undeleteImage forState:UIControlStateNormal];
CGFloat imageSize = 20.0f;
[[self view] addSubview:undeleteButton];
[self setUndeleteButton:undeleteButton];
UIButton *undeleteButton = [UIButton buttonWithType:UIButtonTypeCustom];
[undeleteButton addTarget:self action:@selector(didTapUndeleteButton:) forControlEvents:UIControlEventTouchUpInside];
undeleteButton.frame = CGRectMake(0, 0, imageSize, imageSize);
UIImage* undeleteImage = [UIImage imageWithContentsOfFile:@"/var/mobile/Library/Application Support/TFDidThatSay/eye160dark.png"];
[undeleteButton setImage:undeleteImage forState:UIControlStateNormal];
[[self view] addSubview:undeleteButton];
[self setUndeleteButton:undeleteButton];
}
} }
-(void) _layoutSublayouts{ -(void) _layoutSublayouts{
%orig; %orig;
CGFloat imageSize = 20.0f;
if ([self undeleteButton]){
CGFloat imageSize = 20.0f;
id moreNode = MSHookIvar<id>(self, "moreOptionsNode");
id ageNode = MSHookIvar<id>(self, "ageNode");
id moreNode = MSHookIvar<id>(self, "moreOptionsNode");
id ageNode = MSHookIvar<id>(self, "ageNode");
CGRect nodeFrame = [moreNode frame];
CGFloat centerHeight = (nodeFrame.size.height + nodeFrame.origin.y * 2) / 2.0f;
CGFloat nodeSpacing =[ageNode frame].origin.x - nodeFrame.origin.x - nodeFrame.size.width;
CGRect nodeFrame = [moreNode frame];
CGFloat centerHeight = (nodeFrame.size.height + nodeFrame.origin.y * 2) / 2.0f;
CGFloat nodeSpacing =[ageNode frame].origin.x - nodeFrame.origin.x - nodeFrame.size.width;
[[self undeleteButton] setFrame:CGRectMake(nodeFrame.origin.x - imageSize - nodeSpacing, centerHeight - (imageSize / 2), imageSize, imageSize)];
[[self undeleteButton] setFrame:CGRectMake(nodeFrame.origin.x - imageSize - nodeSpacing, centerHeight - (imageSize / 2), imageSize, imageSize)];
}
} }
%end %end
%hook ApolloCommentsHeaderCellNode %hook ApolloCommentsHeaderCellNode
%property(assign, nonatomic) id undeleteButton;
%property(strong, nonatomic) id undeleteButton;
%new %new
-(void) didTapUndeleteButton{
-(void) didTapUndeleteButton:(id) sender{
[sender setEnabled:NO];
id bodyNode = MSHookIvar<id>(self, "bodyNode"); id bodyNode = MSHookIvar<id>(self, "bodyNode");
id postInfoNode = MSHookIvar<id>(self, "postInfoNode"); id postInfoNode = MSHookIvar<id>(self, "postInfoNode");
[bodyNode setAttributedString:[%c(MarkdownRenderer) attributedStringFromMarkdown:body withAttributes:apolloBodyAttributes]]; [bodyNode setAttributedString:[%c(MarkdownRenderer) attributedStringFromMarkdown:body withAttributes:apolloBodyAttributes]];
[sender setEnabled:YES];
}]; }];
} }
CGFloat imageSize = 20.0f; CGFloat imageSize = 20.0f;
UIButton *undeleteButton = [UIButton buttonWithType:UIButtonTypeCustom]; UIButton *undeleteButton = [UIButton buttonWithType:UIButtonTypeCustom];
[undeleteButton addTarget:self action:@selector(didTapUndeleteButton) forControlEvents:UIControlEventTouchUpInside];
[undeleteButton addTarget:self action:@selector(didTapUndeleteButton:) forControlEvents:UIControlEventTouchUpInside];
UIImage* undeleteImage = [UIImage imageWithContentsOfFile:@"/var/mobile/Library/Application Support/TFDidThatSay/eye160dark.png"]; UIImage* undeleteImage = [UIImage imageWithContentsOfFile:@"/var/mobile/Library/Application Support/TFDidThatSay/eye160dark.png"];
[undeleteButton setImage:undeleteImage forState:UIControlStateNormal]; [undeleteButton setImage:undeleteImage forState:UIControlStateNormal];
CGFloat centerHeight = [postInfoNode frame].origin.y + ([ageNode frame].size.height + [ageNode frame].origin.y * 2) / 2.0f; CGFloat centerHeight = [postInfoNode frame].origin.y + ([ageNode frame].size.height + [ageNode frame].origin.y * 2) / 2.0f;
CGFloat buttonXPos = [postInfoNode frame].origin.x + [postInfoNode frame].size.width - imageSize; CGFloat buttonXPos = [postInfoNode frame].origin.x + [postInfoNode frame].size.width - imageSize;
//Compiling with DEBUG=0 causes this to break the app, I have no idea why.
[[self undeleteButton] setFrame:CGRectMake(buttonXPos, centerHeight - (imageSize / 2), imageSize, imageSize)]; [[self undeleteButton] setFrame:CGRectMake(buttonXPos, centerHeight - (imageSize / 2), imageSize, imageSize)];
} }
} }
%ctor { %ctor {
NSString* processName = [[NSProcessInfo processInfo] processName]; NSString* processName = [[NSProcessInfo processInfo] processName];
if ([processName isEqualToString:@"Apollo"]){ if ([processName isEqualToString:@"Apollo"]){
%init(Apollo, ApolloCommentsHeaderCellNode = objc_getClass("Apollo.CommentsHeaderCellNode"), ApolloCommentCellNode = objc_getClass("Apollo.CommentCellNode"), ApolloApolloButtonNode = objc_getClass("Apollo.ApolloButtonNode")); %init(Apollo, ApolloCommentsHeaderCellNode = objc_getClass("Apollo.CommentsHeaderCellNode"), ApolloCommentCellNode = objc_getClass("Apollo.CommentCellNode"), ApolloApolloButtonNode = objc_getClass("Apollo.ApolloButtonNode"));
} }
} }

+ 53
- 124
tweak/Narwhal.xm View File



%group Narwhal %group Narwhal
UIAlertController* recreateActionSheet(id controller, id comment, NSInteger commentIndex){
UIAlertController* alert = [UIAlertController alertControllerWithTitle:nil message:nil preferredStyle:nil];
UIAlertAction* pmAction = [UIAlertAction actionWithTitle:[NSString stringWithFormat:@"private message %@", [comment author]] style:nil handler:^(UIAlertAction* action){[controller _handleActionSheetPrivateMessage:comment];}];
UIAlertAction* viewProfileAction = [UIAlertAction actionWithTitle:@"view profile" style:nil handler:^(UIAlertAction* action){[controller _handleActionSheetViewProfile:comment];}];
UIAlertAction* shareAction = [UIAlertAction actionWithTitle:@"share comment" style:nil handler:^(UIAlertAction* action){[controller _handleActionSheetShareComment:comment];}];
UIAlertAction* copyAction = [UIAlertAction actionWithTitle:@"copy text" style:nil handler:^(UIAlertAction* action){[controller _handleActionSheetCopyCommentText:comment];}];
UIAlertAction* reportAction = [UIAlertAction actionWithTitle:@"report comment" style:nil handler:^(UIAlertAction* action){[controller _handleActionSheetReportComment:comment];}];
UIAlertAction* cancelAction = [UIAlertAction actionWithTitle:@"cancel" style:UIAlertActionStyleCancel handler:nil];
[alert addAction:pmAction];
[alert addAction:viewProfileAction];
[alert addAction:shareAction];
[alert addAction:copyAction];
if ([comment isSaved]){
UIAlertAction* unsaveAction = [UIAlertAction actionWithTitle:@"unsave comment" style:nil handler:^(UIAlertAction* action){[controller _handleActionSheetUnsaveComment:comment index:commentIndex];}];
[alert addAction:unsaveAction];
} else {
UIAlertAction* saveAction = [UIAlertAction actionWithTitle:@"save comment" style:nil handler:^(UIAlertAction* action){[controller _handleActionSheetSaveComment:comment index:commentIndex];}];
[alert addAction:saveAction];
}
if ([[[comment parentID] componentsSeparatedByString:@"_"][0] isEqualToString:@"t1"]){
UIAlertAction* viewParentAction = [UIAlertAction actionWithTitle:@"view parent" style: nil handler:^(UIAlertAction* action){[controller _handleActionSheetViewParent:comment];}];
[alert addAction:viewParentAction];
}
if ([[comment author] isEqualToString:[[%c(NRTAuthManager) sharedManager] currentUsername]]) {
UIAlertAction* editAction = [UIAlertAction actionWithTitle:@"edit comment" style:nil handler:^(UIAlertAction* action){[controller _handleActionSheetEditComment:comment];}];
UIAlertAction* deleteAction = [UIAlertAction actionWithTitle:@"delete comment" style:nil handler:^(UIAlertAction* action){[controller _handleActionSheetDeleteComment:comment];}];
[alert addAction:editAction];
[alert addAction:deleteAction];
}
[alert addAction:reportAction];
[alert addAction:cancelAction];
UIAlertAction* undeleteAction = [UIAlertAction actionWithTitle:@"tf did that say?" style:nil handler:^(UIAlertAction* action){[controller handleUndeleteCommentAction:comment];}];
[alert addAction:undeleteAction];
return alert;
}
BOOL shouldHaveUndeleteAction = NO;
id tfComment;
id tfController;
void getUndeleteCommentData(id controller, id comment){ void getUndeleteCommentData(id controller, id comment){
if ([body isEqualToString:@"[deleted]"] || [body isEqualToString:@"[removed]"]){ if ([body isEqualToString:@"[deleted]"] || [body isEqualToString:@"[removed]"]){
body = @"[pushshift was unable to archive this]"; body = @"[pushshift was unable to archive this]";
} }
if (!body){
body = @"[wtf]";
}
if (!author){
author = @"[wtf]";
}
} else { } else {
body = @"[pushshift has not archived this yet]"; body = @"[pushshift has not archived this yet]";
} }
[controller performSelectorOnMainThread:@selector(completeUndeleteComment:) withObject:@{@"body":body, @"author":author, @"comment":comment} waitUntilDone:NO]; [controller performSelectorOnMainThread:@selector(completeUndeleteComment:) withObject:@{@"body":body, @"author":author, @"comment":comment} waitUntilDone:NO];
}]; }];
}
}
%hook UIViewController
-(void) presentViewController:(id) arg1 animated:(BOOL) arg2 completion:(id) arg3{
if ([arg1 isKindOfClass:[UIAlertController class]] && shouldHaveUndeleteAction){
UIAlertAction* undeleteAction;
if (tfComment){
undeleteAction = [UIAlertAction actionWithTitle:@"tf did that say?" style:nil handler:^(UIAlertAction* action){getUndeleteCommentData(tfController, tfComment);}];
} else {
undeleteAction = [UIAlertAction actionWithTitle:@"tf did that say?" style:nil handler:^(UIAlertAction* action){[tfController handleUndeletePostAction];}];
}
[arg1 addAction:undeleteAction];
}
%orig;
}
%end

%hook NRTLinkViewController %hook NRTLinkViewController
[[self tableView] reloadData]; [[self tableView] reloadData];
} }
%new
-(void) handleUndeleteCommentAction:(id) comment{
getUndeleteCommentData(self, comment);
}
%new %new
-(void) handleUndeletePostAction{ -(void) handleUndeletePostAction{
[self performSelectorOnMainThread:@selector(completeUndeletePost:) withObject:@{@"body":body, @"author":author, @"post":post} waitUntilDone:NO]; [self performSelectorOnMainThread:@selector(completeUndeletePost:) withObject:@{@"body":body, @"author":author, @"post":post} waitUntilDone:NO];
}]; }];
} }
-(void) swipeCell:(id) arg1 didEndDragWithState:(NSUInteger) arg2{ -(void) swipeCell:(id) arg1 didEndDragWithState:(NSUInteger) arg2{
if ([arg1 isKindOfClass:[%c(NRTCommentTableViewCell) class]]) { if ([arg1 isKindOfClass:[%c(NRTCommentTableViewCell) class]]) {
id comment = [arg1 comment];
NSInteger commentIndex = [[[self commentsManager] comments] indexOfObject:comment];
tfComment = [arg1 comment];
tfController = self;
shouldHaveUndeleteAction = YES;
UIAlertController* alert = recreateActionSheet(self, comment, commentIndex);
[self presentViewController:alert animated:YES completion:nil];
} else {
%orig;
}
} else {
%orig;
}
}
}
%orig;
shouldHaveUndeleteAction = NO;
} }
-(void) _dotsButtonTouched:(id) arg1{ -(void) _dotsButtonTouched:(id) arg1{
id post = [self link];
BOOL shouldHaveUndeleteAction = NO;
UIAlertController* alert = [UIAlertController alertControllerWithTitle:nil message:nil preferredStyle:nil];
UIAlertAction* undeletePostAction;
UIAlertAction* sharePostAction = [UIAlertAction actionWithTitle:@"share reddit post" style:nil handler:^(UIAlertAction* action){[self _handleActionSheetSharePost];}];
UIAlertAction* sortCommentsAction = [UIAlertAction actionWithTitle:@"sort comments" style:nil handler:^(UIAlertAction* action){[self _handleActionSheetSortComments];}];
UIAlertAction* refreshCommentsAction = [UIAlertAction actionWithTitle:@"refresh comments" style:nil handler:^(UIAlertAction* action){[self _handleActionSheetRefreshComments];}];
UIAlertAction* reportPostAction = [UIAlertAction actionWithTitle:@"report post" style:nil handler:^(UIAlertAction* action){[self _handleActionSheetReportPost];}];
UIAlertAction* cancelAction = [UIAlertAction actionWithTitle:@"cancel" style:UIAlertActionStyleCancel handler:nil];
[alert addAction:sharePostAction];
[alert addAction:sortCommentsAction];
[alert addAction:refreshCommentsAction];
if ([self linkTextOffscreenCell]){ if ([self linkTextOffscreenCell]){
UIAlertAction* refreshPostAction = [UIAlertAction actionWithTitle:@"refresh post" style:nil handler:^(UIAlertAction* action){[self _handleActionSheetRefreshPost];}];
[alert addAction:refreshPostAction];
undeletePostAction = [UIAlertAction actionWithTitle:@"tf did that say?" style:nil handler:^(UIAlertAction* action){[self handleUndeletePostAction];}];
tfController = self;
tfComment = nil;
shouldHaveUndeleteAction = YES; shouldHaveUndeleteAction = YES;
}
if ([[post author] isEqualToString:[[%c(NRTAuthManager) sharedManager] currentUsername]]){
UIAlertAction* editPostAction = [UIAlertAction actionWithTitle:@"edit post" style:nil handler:^(UIAlertAction* action){[self _handleActionSheetEditPost];}];
UIAlertAction* deletePostAction = [UIAlertAction actionWithTitle:@"delete post" style:nil handler:^(UIAlertAction* action){[self _handleActionSheetDeletePost];}];
[alert addAction:editPostAction];
[alert addAction:deletePostAction];
} }
[alert addAction:reportPostAction];
[alert addAction:cancelAction];
if (shouldHaveUndeleteAction){
[alert addAction:undeletePostAction];
}
[self presentViewController:alert animated:YES completion:nil];
%orig;
shouldHaveUndeleteAction = NO;
} }
%end %end
} }
} }
%new
-(void) handleUndeleteCommentAction:(id) comment{
getUndeleteCommentData(self, comment);
}
-(void) swipeCell:(id) arg1 didEndDragWithState:(NSUInteger) arg2{ -(void) swipeCell:(id) arg1 didEndDragWithState:(NSUInteger) arg2{
if (arg2 == 2){ if (arg2 == 2){
if ([arg1 isKindOfClass:[%c(NRTCommentTableViewCell) class]]) { if ([arg1 isKindOfClass:[%c(NRTCommentTableViewCell) class]]) {
id comment = [arg1 comment];
NSInteger commentIndex = [[[self commentsManager] comments] indexOfObject:comment];
UIAlertController* alert = recreateActionSheet(self, comment, commentIndex);
[[self parentController] presentViewController:alert animated:YES completion:nil];
tfComment = [arg1 comment];
tfController = self;
shouldHaveUndeleteAction = YES;
} else {
%orig;
}
} else {
%orig;
}
}
}
%orig;
shouldHaveUndeleteAction = NO;
} }
%end %end

Loading…
Cancel
Save