1 #pragma once 2 3 #include <memory> 4 #include <string> 5 #include "Scheduler.h" 6 7 namespace reanimated { 8 9 struct ErrorWrapper { 10 std::string message = ""; 11 bool handled = true; 12 }; 13 14 class ErrorHandler { 15 public: raise()16 bool raise() { 17 if (getError()->handled) { 18 return false; 19 } 20 this->getScheduler()->scheduleOnUI([this]() mutable { this->raiseSpec(); }); 21 return true; 22 } 23 virtual std::shared_ptr<Scheduler> getScheduler() = 0; 24 virtual std::shared_ptr<ErrorWrapper> getError() = 0; 25 virtual void setError(std::string message) = 0; ~ErrorHandler()26 virtual ~ErrorHandler() {} 27 28 protected: 29 virtual void raiseSpec() = 0; 30 }; 31 32 } // namespace reanimated 33