Toast.m 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. #import <UIKit/UIKit.h>
  2. #import <React/RCTLog.h>
  3. #import <React/RCTBridgeModule.h>
  4. #import "Toast+UIView.h"
  5. @interface Toast : NSObject <RCTBridgeModule>
  6. @end
  7. @implementation Toast
  8. RCT_EXPORT_MODULE(Toast)
  9. RCT_EXPORT_METHOD(show:(NSDictionary *)options) {
  10. NSString *message = [options objectForKey:@"message"];
  11. NSString *duration = [options objectForKey:@"duration"];
  12. NSString *position = [options objectForKey:@"position"];
  13. NSNumber *addPixelsY = [options objectForKey:@"addPixelsY"];
  14. if (![position isEqual: @"top"] && ![position isEqual: @"center"] && ![position isEqual: @"bottom"]) {
  15. RCTLogError(@"invalid position. valid options are 'top', 'center' and 'bottom'");
  16. return;
  17. }
  18. NSInteger durationInt;
  19. if ([duration isEqual: @"short"]) {
  20. durationInt = 2;
  21. } else if ([duration isEqual: @"long"]) {
  22. durationInt = 5;
  23. } else {
  24. RCTLogError(@"invalid duration. valid options are 'short' and 'long'");
  25. return;
  26. }
  27. dispatch_async(dispatch_get_main_queue(), ^{
  28. [[[[UIApplication sharedApplication]windows]firstObject] makeToast:message duration:durationInt position:position addPixelsY:addPixelsY == nil ? 0 : [addPixelsY intValue]];
  29. });
  30. }
  31. RCT_EXPORT_METHOD(hide) {
  32. dispatch_async(dispatch_get_main_queue(), ^{
  33. [[[[UIApplication sharedApplication]windows]firstObject] hideToast];
  34. });
  35. }
  36. @end