mirror of
https://we.phorge.it/source/phorge.git
synced 2024-12-30 01:10:58 +01:00
Fix unsubscribing from projects in a gross, hacky way
Summary: Fixes T5261. This fix isn't very good. Two better fixes would be: # Add some sort of `setRole(SUBSCRIPTIONS)` method to `ObjectQuery`, which gets passed down until it reaches `ProjectQuery`, and `ProjectQuery` knows that it needs to load more data. This feels OK, but is a very general approach and I don't think we have many/any other use cases right now. I //think// this is the right way in the long run, but I'd like to have more use cases in mind before implementing it. # Add some sort of `loadAllTheSubscriptionStuffYouNeed()` method to `PhabricatorSubscribableInterface`. This feels OK-ish too, but kind of yuck, and doesn't lend itself to proper batching, and is silly if we do the above instead, which I think we probably will. For now, just fix the issue without committing to an infrastructure direction. I think (1) is the right way to go eventually, but I want a better second use case before writing it, since I might be crazy. Test Plan: Unsubscribed from a project. Reviewers: joshuaspence Reviewed By: joshuaspence Subscribers: epriestley Maniphest Tasks: T5261 Differential Revision: https://secure.phabricator.com/D9377
This commit is contained in:
parent
1bfa8b2063
commit
2c626f72a9
1 changed files with 18 additions and 4 deletions
|
@ -37,10 +37,24 @@ final class PhabricatorSubscriptionsEditController
|
||||||
->withPHIDs(array($phid))
|
->withPHIDs(array($phid))
|
||||||
->executeOne();
|
->executeOne();
|
||||||
|
|
||||||
|
if (phid_get_type($phid) == PhabricatorProjectPHIDTypeProject::TYPECONST) {
|
||||||
|
// TODO: This is a big hack, but a weak argument for adding some kind
|
||||||
|
// of "load for role" feature to ObjectQuery, and also not a really great
|
||||||
|
// argument for adding some kind of "load extra stuff" feature to
|
||||||
|
// SubscriberInterface. Do this for now and wait for the best way forward
|
||||||
|
// to become more clear?
|
||||||
|
|
||||||
|
$object = id(new PhabricatorProjectQuery())
|
||||||
|
->setViewer($user)
|
||||||
|
->withPHIDs(array($phid))
|
||||||
|
->needWatchers(true)
|
||||||
|
->executeOne();
|
||||||
|
} else {
|
||||||
$object = id(new PhabricatorObjectQuery())
|
$object = id(new PhabricatorObjectQuery())
|
||||||
->setViewer($user)
|
->setViewer($user)
|
||||||
->withPHIDs(array($phid))
|
->withPHIDs(array($phid))
|
||||||
->executeOne();
|
->executeOne();
|
||||||
|
}
|
||||||
|
|
||||||
if (!($object instanceof PhabricatorSubscribableInterface)) {
|
if (!($object instanceof PhabricatorSubscribableInterface)) {
|
||||||
return $this->buildErrorResponse(
|
return $this->buildErrorResponse(
|
||||||
|
|
Loading…
Reference in a new issue