Lucas_Werkmeister_WMDE created this task.
Lucas_Werkmeister_WMDE added projects: Wikidata, MediaWiki-Watchlist, 
MediaWiki-User-management.
Restricted Application added a subscriber: Aklapper.
Restricted Application added a project: Growth-Team.

TASK DESCRIPTION
  As a tool developer, I want to write tools that work as expected without 
extra implementation effort and privileges required; as a tool user, I expect a 
tool that creates or edits entities on my behalf to add those entities to my 
watchlist if my user settings say to add created/edited pages to the watchlist.
  
  **Problem:**
  @KaMan reported over half a year ago 
<https://www.wikidata.org/wiki/Wikidata_talk:Lexicographical_data/Archive/2018/08#New_tool:_Wikidata_Lexeme_Forms>
 that, when the Wikidata Lexeme Forms tool creates a new lexeme, the page is 
not added to the user’s watchlist even if the user has the “Add pages I create 
and files I upload to my watchlist” preference 
<https://www.wikidata.org/wiki/Special:Preferences#mw-prefsection-watchlist> 
enabled, and I think I’ve //finally// figured out why this happens (while 
looking at the related code due to T213725 
<https://phabricator.wikimedia.org/T213725>). This is the code in Wikibase (in 
`SubmitEntityAction`): that updates the watchlist:
  
        /**
         * Update watchlist.
         *
         * @param Title $title
         */
        private function doWatch( Title $title ) {
                $user = $this->getUser();
    
                if ( $user->isLoggedIn()
                        && $user->getOption( 'watchdefault' )
                        && !$user->isWatched( $title )
                ) {
                        WatchAction::doWatch( $title, $user );
                }
        }
  
  And this is the `WatchAction` function that MediaWiki core itself uses (e. g. 
in `EditPage::updateWatchlist()`):
  
        /**
         * Watch or unwatch a page
         * @since 1.22
         * @param bool $watch Whether to watch or unwatch the page
         * @param Title $title Page to watch/unwatch
         * @param User $user User who is watching/unwatching
         * @return Status
         */
        public static function doWatchOrUnwatch( $watch, Title $title, User 
$user ) {
                if ( $user->isLoggedIn() &&
                        $user->isWatched( $title, User::IGNORE_USER_RIGHTS ) != 
$watch
                ) {
                        // If the user doesn't have 'editmywatchlist', we still 
want to
                        // allow them to add but not remove items via edits and 
such.
                        if ( $watch ) {
                                return self::doWatch( $title, $user, 
User::IGNORE_USER_RIGHTS );
                        } else {
                                return self::doUnwatch( $title, $user );
                        }
                }
    
                return Status::newGood();
        }
  
  Notice that it adds the `IGNORE_USER_RIGHTS` flag, because “if the user 
doesn’t have `editmywatchlist` //(e. g. because the OAuth consumer in use does 
not include the `editmywatchlist` grant)//, we still want to allow them to add 
… items via edits”. I think this is exactly the bit that’s missing in Wikibase, 
which is why edits from Wikidata Lexeme Forms don’t end up on the watchlist.
  
  **BDD**
  GIVEN the user is using an OAuth consumer or bot password that does not 
include the “Edit your watchlist” grant, e. g. Wikidata Lexeme Forms 
<https://tools.wmflabs.org/lexeme-forms/> (consumer 
<https://www.wikidata.org/wiki/Special:OAuthListConsumers/view/437663cb06aefeb1339dd48e1e297dcf>)
  WHEN an entity is created or edited
  THEN it is added to the user’s watchlist according to the user’s settings.

TASK DETAIL
  https://phabricator.wikimedia.org/T217144

EMAIL PREFERENCES
  https://phabricator.wikimedia.org/settings/panel/emailpreferences/

To: Lucas_Werkmeister_WMDE
Cc: Aklapper, Lucas_Werkmeister_WMDE, KaMan, DannyS712, Nandana, kostajh, Lahi, 
Gq86, GoranSMilovanovic, QZanden, LawExplorer, JJMC89, _jensen, Taiwania_Justo, 
Wong128hk, Wikidata-bugs, aude, Dinoguy1000, Mbch331
_______________________________________________
Wikidata-bugs mailing list
Wikidata-bugs@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikidata-bugs

Reply via email to