imessageforwarder's People
Forkers
socios-linuximessageforwarder's Issues
Show all numbers
Currently, the top bar only shows one or two numbers, and there is no way to expand it to see all the numbers in a group. How this is handled needs to be investigated and implemented.
Message received sounds
Message received sounds should only play when all of the following conditions are met:
- The message is not for an active chat
- The message is not from me
- A sound has not played in the last 5 seconds
All of these cases currently play sound, which is obnoxious.
Infinite recursion
Constantly resizing the window (dragging and never letting go) for a period of time will eventually cause the program to crash. This is because the resizing causes the functions _configure_canvas and _configure_scrollbars to get caught in an infinite loop. Removing the call to _configure_scrollbars in _configure_canvas seems to stop this issue, but it needs further testing to make sure it doesn't adversely impact other features.
Message with multiple attachments
Messages with multiple attachments only seem to show the last attachment. This is probably due to an assumption that each attachment is given its own message, which appears to be incorrect.
Short messages border display issue
Short messages (0-2 characters) sometimes have messed up message bubbles due to the way the tk borderImage works. Ideally, I would solve this by changing the imageBorder itself and make it fit all messages. This may be partially solved when dealing with emojis, as messages are typically very short when they are a few emojis long (emojis are typically removed from the text before displaying).
Missing Postman tests
Conversion to https means that more testing should probably be done by Postman/newman. Testing success with client certs is important, but testing failure without https or client cert/key combo is similarly important.
- Test for failure over http
- Test for failure without client cert/key
- Test for failure with bad client cert/key
- Set up testing db for chat.db to test update method
Missing attachment causes odd window resizing
When an attachment fails to load (some Apple specific "attachments" are temporary), the window is sometimes resized to be much larger than it needs to be. Additionally, there can be labels (read/recipient and probably reactions) in the message frame that refer to this message, but it is invisible.
Attachment message bubbles who have missing attachments should probably be converted to text message bubbles with some kind of descriptive text ("Attachment not found") and should not be able to be reacted to.
Make message frame update on message list update instead of on db update
Updating on message list changes will result in a more decoupled api and will allow for an easier time getting message previews to appear.
Message send previews
Add a message bubble showing a message that is in the process of being sent since this can take a couple of seconds to go through and update.
Line break sends new message
Hitting enter sends the message on macbook, therefore breaking one message into multiple. This also breaks message previews.
Scrolling with reaction reception
When receiving a reaction, it will cause the view to become longer. Although new messages cause the scroll bars to readjust (keeping you at the bottom if that's where you were initially), new reactions do not. They should.
Add messages for all special message types
When receiving new messages, a preview appears in the chat button corresponding to that chat. The object replacement character is given as the body in cases where the message is not simple text, like when a video or picture is received.
Redesign outgoing message database
Currently, there is a single database with a single table on the Mac that holds outgoing messages (normal messages and reactions). Due to differing amounts of info required for each of these, it might make sense to split them up into different tables.
Things to keep in mind include:
- Any solution should be extendable to other message types (add/remove from group, rename group, etc)
- Order needs to be maintained to some degree, especially for add/remove from group
- What info is actually required for each message type?
Autocomplete breaks message previews
Since message previews are removed when a message with the same text is sent, autocomplete changes the text and makes them no longer match. This happens with auto-emoji, autocomplete, and spellcheck. A rough solution would be to disable all of these on the Mac message app, which may or may not be doable. Alternatively, a new way to check for messages that match previews may be a worthwhile time investment.
Memory consumption increases rapidly
This can consume a lot of memory very quickly if looking back through a very long text conversation. This seems to be due to the usage of tkinter widgets rather than the message list, since the message list is loaded when a chat is opened. Need to determine if this is from some sort of specific data (like images) or is a result of improper removal/addition of tkinter widgets.
Reactions don't appear immediately
If a message is reacted to and has no reactions displayed already, the reaction will not be displayed until the chat is reloaded. It should be displayed without reloading the chat. If there is already a reaction, it will be displayed immediately as intended.
Cannot tell who reacted to messages in one on one conversation
Since the reaction window is disabled in one on one conversations (the same handle is used for both people in a one on one) and there is no visible distinction in reactions sent by you and the other person, it is currently impossible to tell who reacted to what messages in these cases. Ideally, you would know what you reacted to in the past, but I can understand that this is not always the case and may cause confusion.
There are a few possible solutions:
- Create a new reaction window object that is only used in one on ones. This will have custom handling. Requires handling case where one of each is open.
- Add functionality in current reaction window code to handle one on ones. This will make the current code more bloated.
- Completely rewrite the reaction window code to work for both versions. Biggest time commitment but cleanest code.
Realistically, solutions 1 or 2 are the most likely to be worth the time spent. Solution 3 should be considered when porting to cpp.
Setup up CI
Move testing from local machine to CI platform. Potentially Travis.
Reaction Images
Currently, the images I am using for reactions are simple colored squares. I need to either find free images or create my own for the heart, thumbs up, thumbs down, exclamation, and question reactions.
"Sending" receipt for regular text messages
When sending a regular text, the message never appears as sent since they are updated differently than iMessage.
Move some endpoints to http
In order to speed up the REST API, some endpoints can be moved to http without authentication. These endpoints provide little to no information about the messages themselves, other than temporary ids.
- GET requests that return whether or not a message/reaction/etc is still in the message queue
- GET request that just pings
Remove debug colors
Currently, there are a lot of extra colors that make the app window unsightly. Widgets may or may not need boundaries on them to demarcate specific widgets. While the colors are useful for debugging the GUI layout, these should at least have a toggle on them.
Macbook sleep mode breaks program
If the Macbook goes to sleep, messages will not be sent. This seems to be because the program can not access what is on the screen while the screen saver is up. Simple fix would be a) making it so your Mac can't enter this mode or b) move the mouse or perform some action to wake up a sleeping device. Option b) is probably the more desirable solution in order to minimize power consumption while inactive.
Add compose button
Add a compose button. There is not yet a way to start a new chat from the GUI.
Implement group renaming
Now that group renaming messages are properly displayed in the chat interface, it might be a good idea to implement the logic to actually rename the group. This involves implementing functionality in both the GUI and autoMessage.py.
Depends on #57 since the format of the database could change.
Attachment overlap
Due to the way attachments are named and handled (by only looking at basename), multiple different attachments could end up with the same file name on the local device. This means that the new image will not be pulled over. The naming scheme needs to be changed so that the parent directories are taken into account.
Message reaction display
Design a way for reactions to effectively be read. Currently, they overlap each other and make it hard to see.
Size change on chat load
The window grows and shrinks when another row is added/removed from the recipientFrame. This should not happen. This stops happening if the window is manually resized before loading chats. Resizing once seems to solve this problem for the duration of the session.
Save and retrieve lastAccess
In the updater, the time of lastAccess is not saved between runs. This means that at startup, the updater attempts to grab all messages (starting from Unix time 0) from the remote machine. Obviously this could cause a lot of messages to be grabbed, and although this might need to happen once, it shouldn't occur on every usage.
autoMessage.py is a mess
I fear no man. But that thing... it scares me.
This entire file needs to be rewritten. Not only is it incredibly jumbled and confusing, it also does not have an easy way to adapt to different screen sizes or resolutions. This could be a problem depending on the type of Mac it is running on (ie if it runs on anything other than the Macbook I use).
Need requirements.txt
Need to create a requirements file for #42 to use
Make "Add recipient" button active only before sending the first message
The "Add recipient" button remains active after the first message to a new group is sent. This button should go away after the first message is sent and the group is "set".
No connection indicator
Create some kind of indication that messages cannot currently be sent due to a lack of connection. This should also help facilitate the quick shutdown of the application, since currently the updater thread remains running until the SSH timeout, which can take a significant amount of time.
npm install does not run during INSTALL
For whatever reason, npm install is not run on the remote machine during installation. This is a fairly small issue. Cleaning up the code around create_certs and install_scripts is probably wise as well.
Need installation script
A basic installation script might be helpful. Such a script would be run on the Linux box and do the following:
- Ask for info to set up config files
- Create local db
- Attempt to connect to Macbook
- Install scripts on Macbook
- Update Macbook chat.db
- Test for dependencies
- Run tests to make sure everything works as expected
Delete Add recipient window when not needed
Currently, clicking the "Add recipient" button causes a new window to appear that allows the user to type in the name/number to use. This window does not close when switching chats or after sending the first message to a new group. This allows some odd bugs to crop up if recipients are added after either of these events.
Sound has gone
Playsound does not seem to play nicely with python 3.8 for some reason. This could just be my setup, so more investigation is needed. When the sound would normally play, I get the following error:
ImportError: cannot import name '_gi' from partially initialized module 'gi' (most likely due to a circular import) (/usr/lib/python3/dist-packages/gi/__init__.py)
README out of date
The current README contains info pertaining to the old iPhone based version and not the Macbook rewrite. The README needs to be updated to reflect the current code and its usage.
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. ๐๐๐
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.