diff --git a/fbchat/_client.py b/fbchat/_client.py index 14652f9..5854f8f 100644 --- a/fbchat/_client.py +++ b/fbchat/_client.py @@ -87,8 +87,6 @@ class Client: """ self._sticky, self._pool = (None, None) self._seq = "0" - self._default_thread_id = None - self._default_thread_type = None self._pull_channel = 0 self._markAlive = True self._buddylist = dict() @@ -235,45 +233,6 @@ class Client: END LOGIN METHODS """ - """ - DEFAULT THREAD METHODS - """ - - def _getThread(self, given_thread_id=None, given_thread_type=None): - """Check if thread ID is given and if default is set, and return correct values. - - Returns: - tuple: Thread ID and thread type - - Raises: - ValueError: If thread ID is not given and there is no default - """ - if given_thread_id is None: - if self._default_thread_id is not None: - return self._default_thread_id, self._default_thread_type - else: - raise ValueError("Thread ID is not set") - else: - return given_thread_id, given_thread_type - - def setDefaultThread(self, thread_id, thread_type): - """Set default thread to send messages to. - - Args: - thread_id: User/Group ID to default to. See :ref:`intro_threads` - thread_type (ThreadType): See :ref:`intro_threads` - """ - self._default_thread_id = thread_id - self._default_thread_type = thread_type - - def resetDefaultThread(self): - """Reset default thread.""" - self.setDefaultThread(None, None) - - """ - END DEFAULT THREAD METHODS - """ - """ FETCH METHODS """ @@ -494,8 +453,6 @@ class Client: Raises: FBchatException: If request failed """ - thread_id, thread_type = self._getThread(thread_id, None) - data = { "query": query, "snippetOffset": offset, @@ -756,8 +713,6 @@ class Client: Raises: FBchatException: If request failed """ - thread_id, thread_type = self._getThread(thread_id, None) - params = { "id": thread_id, "message_limit": limit, @@ -902,7 +857,6 @@ class Client: Raises: FBchatException: If request failed """ - thread_id, thread_type = self._getThread(thread_id, None) message_info = self._forcedFetch(thread_id, mid).get("message") return Message._from_graphql(message_info) @@ -987,7 +941,6 @@ class Client: Returns: typing.Iterable: :class:`ImageAttachment` or :class:`VideoAttachment` """ - thread_id, thread_type = self._getThread(thread_id, None) data = {"id": thread_id, "first": 48} thread_id = str(thread_id) j, = self.graphql_requests(_graphql.from_query_id("515216185516880", data)) @@ -1049,7 +1002,6 @@ class Client: Raises: FBchatException: If request failed """ - thread_id, thread_type = self._getThread(thread_id, thread_type) thread = thread_type._to_class()(thread_id) data = thread._to_send_data() data.update(message._to_send_data()) @@ -1069,7 +1021,6 @@ class Client: Raises: FBchatException: If request failed """ - thread_id, thread_type = self._getThread(thread_id, thread_type) thread = thread_type._to_class()(thread_id) data = thread._to_send_data() data["action_type"] = "ma-type:user-generated-message" @@ -1134,7 +1085,6 @@ class Client: def _sendLocation( self, location, current=True, message=None, thread_id=None, thread_type=None ): - thread_id, thread_type = self._getThread(thread_id, thread_type) thread = thread_type._to_class()(thread_id) data = thread._to_send_data() if message is not None: @@ -1203,7 +1153,6 @@ class Client: `files` should be a list of tuples, with a file's ID and mimetype. """ - thread_id, thread_type = self._getThread(thread_id, thread_type) thread = thread_type._to_class()(thread_id) data = thread._to_send_data() data.update(self._oldMessage(message)._to_send_data()) @@ -1319,7 +1268,6 @@ class Client: Raises: FBchatException: If request failed """ - thread_id, thread_type = self._getThread(thread_id, None) data = { "attachment_id": attachment_id, "recipient_map[{}]".format(_util.generateOfflineThreadingID()): thread_id, @@ -1369,7 +1317,6 @@ class Client: Raises: FBchatException: If request failed """ - thread_id, thread_type = self._getThread(thread_id, None) data = Group(thread_id)._to_send_data() data["action_type"] = "ma-type:log-message" @@ -1399,14 +1346,10 @@ class Client: Raises: FBchatException: If request failed """ - thread_id, thread_type = self._getThread(thread_id, None) - data = {"uid": user_id, "tid": thread_id} j = self._payload_post("/chat/remove_participants/", data) def _adminStatus(self, admin_ids, admin, thread_id=None): - thread_id, thread_type = self._getThread(thread_id, None) - data = {"add": admin, "thread_fbid": thread_id} admin_ids = _util.require_list(admin_ids) @@ -1450,14 +1393,10 @@ class Client: Raises: FBchatException: If request failed """ - thread_id, thread_type = self._getThread(thread_id, None) - data = {"set_mode": int(require_admin_approval), "thread_fbid": thread_id} j = self._payload_post("/messaging/set_approval_mode/?dpr=1", data) def _usersApproval(self, user_ids, approve, thread_id=None): - thread_id, thread_type = self._getThread(thread_id, None) - user_ids = _util.require_list(user_ids) data = { @@ -1506,8 +1445,6 @@ class Client: Raises: FBchatException: If request failed """ - thread_id, thread_type = self._getThread(thread_id, None) - data = {"thread_image_id": image_id, "thread_id": thread_id} j = self._payload_post("/messaging/set_thread_image/?dpr=1", data) @@ -1555,8 +1492,6 @@ class Client: Raises: FBchatException: If request failed """ - thread_id, thread_type = self._getThread(thread_id, thread_type) - if thread_type == ThreadType.USER: # The thread is a user, so we change the user's nickname return self.changeNickname( @@ -1580,8 +1515,6 @@ class Client: Raises: FBchatException: If request failed """ - thread_id, thread_type = self._getThread(thread_id, thread_type) - data = { "nickname": nickname, "participant_id": user_id, @@ -1601,8 +1534,6 @@ class Client: Raises: FBchatException: If request failed """ - thread_id, thread_type = self._getThread(thread_id, None) - data = { "color_choice": color.value if color != ThreadColor.MESSENGER_BLUE else "", "thread_or_other_fbid": thread_id, @@ -1625,8 +1556,6 @@ class Client: Raises: FBchatException: If request failed """ - thread_id, thread_type = self._getThread(thread_id, None) - data = {"emoji_choice": emoji, "thread_or_other_fbid": thread_id} j = self._payload_post( "/messaging/save_thread_emoji/?source=thread_settings&dpr=1", data @@ -1663,8 +1592,6 @@ class Client: Raises: FBchatException: If request failed """ - thread_id, thread_type = self._getThread(thread_id, None) - data = { "event_type": "EVENT", "event_time": _util.datetime_to_seconds(plan.time), @@ -1741,8 +1668,6 @@ class Client: Raises: FBchatException: If request failed """ - thread_id, thread_type = self._getThread(thread_id, None) - # We're using ordered dictionaries, because the Facebook endpoint that parses # the POST parameters is badly implemented, and deals with ordering the options # wrongly. If you can find a way to fix this for the endpoint, or if you find @@ -1799,8 +1724,6 @@ class Client: Raises: FBchatException: If request failed """ - thread_id, thread_type = self._getThread(thread_id, thread_type) - data = { "typ": status.value, "thread": thread_id, @@ -2012,7 +1935,6 @@ class Client: Raises: FBchatException: If request failed """ - thread_id, thread_type = self._getThread(thread_id, None) j = self._payload_post("/ajax/mercury/mark_spam.php?dpr=1", {"id": thread_id}) return True @@ -2042,7 +1964,6 @@ class Client: mute_time (datetime.timedelta): Time to mute, use ``None`` to mute forever thread_id: User/Group ID to mute. See :ref:`intro_threads` """ - thread_id, thread_type = self._getThread(thread_id, None) if mute_time is None: mute_settings = -1 else: @@ -2065,7 +1986,6 @@ class Client: mute: Boolean. True to mute, False to unmute thread_id: User/Group ID to mute. See :ref:`intro_threads` """ - thread_id, thread_type = self._getThread(thread_id, None) data = {"reactions_mute_mode": int(mute), "thread_fbid": thread_id} j = self._payload_post( "/ajax/mercury/change_reactions_mute_thread/?dpr=1", data @@ -2086,7 +2006,6 @@ class Client: mute: Boolean. True to mute, False to unmute thread_id: User/Group ID to mute. See :ref:`intro_threads` """ - thread_id, thread_type = self._getThread(thread_id, None) data = {"mentions_mute_mode": int(mute), "thread_fbid": thread_id} j = self._payload_post("/ajax/mercury/change_mentions_mute_thread/?dpr=1", data) diff --git a/tests/conftest.py b/tests/conftest.py index 53c4773..f2a8a34 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -45,9 +45,11 @@ def client2(pytestconfig): @pytest.fixture(scope="module") def client(client1, thread): - client1.setDefaultThread(thread["id"], thread["type"]) + # TODO: These are commented out since `setDefaultThread` is removed - But now any + # test that use this fixture is likely broken! + # client1.setDefaultThread(thread["id"], thread["type"]) yield client1 - client1.resetDefaultThread() + # client1.resetDefaultThread() @pytest.fixture(scope="session", params=["client1", "client2"]) diff --git a/tests/test_base.py b/tests/test_base.py index 25aa94b..1528968 100644 --- a/tests/test_base.py +++ b/tests/test_base.py @@ -38,13 +38,3 @@ def test_sessions(client1): Client("no email needed", "no password needed", session_cookies=session) client1.setSession(session) assert client1.isLoggedIn() - - -@pytest.mark.tryfirst -def test_default_thread(client1, thread): - client1.setDefaultThread(thread["id"], thread["type"]) - assert client1.send(Message(text="Sent to the specified thread")) - - client1.resetDefaultThread() - with pytest.raises(ValueError): - client1.send(Message(text="Should not be sent"))