UserFilterObserver.php 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. <?php
  2. namespace App\Observers;
  3. use App\UserFilter;
  4. use App\Services\UserFilterService;
  5. use App\Jobs\HomeFeedPipeline\FeedFollowPipeline;
  6. use App\Jobs\HomeFeedPipeline\FeedUnfollowPipeline;
  7. class UserFilterObserver
  8. {
  9. /**
  10. * Handle events after all transactions are committed.
  11. *
  12. * @var bool
  13. */
  14. public $afterCommit = true;
  15. /**
  16. * Handle the user filter "created" event.
  17. *
  18. * @param \App\UserFilter $userFilter
  19. * @return void
  20. */
  21. public function created(UserFilter $userFilter)
  22. {
  23. $this->filterCreate($userFilter);
  24. }
  25. /**
  26. * Handle the user filter "updated" event.
  27. *
  28. * @param \App\UserFilter $userFilter
  29. * @return void
  30. */
  31. public function updated(UserFilter $userFilter)
  32. {
  33. $this->filterCreate($userFilter);
  34. }
  35. /**
  36. * Handle the user filter "deleted" event.
  37. *
  38. * @param \App\UserFilter $userFilter
  39. * @return void
  40. */
  41. public function deleted(UserFilter $userFilter)
  42. {
  43. $this->filterDelete($userFilter);
  44. }
  45. /**
  46. * Handle the user filter "restored" event.
  47. *
  48. * @param \App\UserFilter $userFilter
  49. * @return void
  50. */
  51. public function restored(UserFilter $userFilter)
  52. {
  53. $this->filterCreate($userFilter);
  54. }
  55. /**
  56. * Handle the user filter "force deleted" event.
  57. *
  58. * @param \App\UserFilter $userFilter
  59. * @return void
  60. */
  61. public function forceDeleted(UserFilter $userFilter)
  62. {
  63. $this->filterDelete($userFilter);
  64. }
  65. protected function filterCreate(UserFilter $userFilter)
  66. {
  67. if($userFilter->filterable_type !== 'App\Profile') {
  68. return;
  69. }
  70. switch ($userFilter->filter_type) {
  71. case 'mute':
  72. UserFilterService::mute($userFilter->user_id, $userFilter->filterable_id);
  73. FeedUnfollowPipeline::dispatch($userFilter->user_id, $userFilter->filterable_id)->onQueue('feed');
  74. break;
  75. case 'block':
  76. UserFilterService::block($userFilter->user_id, $userFilter->filterable_id);
  77. FeedUnfollowPipeline::dispatch($userFilter->user_id, $userFilter->filterable_id)->onQueue('feed');
  78. break;
  79. }
  80. }
  81. protected function filterDelete(UserFilter $userFilter)
  82. {
  83. if($userFilter->filterable_type !== 'App\Profile') {
  84. return;
  85. }
  86. switch ($userFilter->filter_type) {
  87. case 'mute':
  88. UserFilterService::unmute($userFilter->user_id, $userFilter->filterable_id);
  89. FeedFollowPipeline::dispatch($userFilter->user_id, $userFilter->filterable_id)->onQueue('feed');
  90. break;
  91. case 'block':
  92. UserFilterService::unblock($userFilter->user_id, $userFilter->filterable_id);
  93. FeedFollowPipeline::dispatch($userFilter->user_id, $userFilter->filterable_id)->onQueue('feed');
  94. break;
  95. }
  96. }
  97. }