wordpress-mobile / wordpress-ios Goto Github PK
View Code? Open in Web Editor NEWWordPress for iOS - Official repository
Home Page: http://ios.wordpress.org/
License: GNU General Public License v2.0
WordPress for iOS - Official repository
Home Page: http://ios.wordpress.org/
License: GNU General Public License v2.0
EditPostViewController.m line 561
-[EditPostViewController selectionTableViewController:completedSelectionsWithContext:selectedObjects:haveChanges:]
Fatal Exception NSInvalidArgumentException
Illegal attempt to establish a relationship 'categories' between objects in different contexts
To reproduce:
For external feeds all the toolbar items are disabled, so the toolbar shows blank.
The reader view controller sets its title:
self.title = [[[ReaderPost currentTopic] objectForKey:@"title"] capitalizedString];
This might be necessary for topics, but strings that are translated look weird when capitalized, at least in Spanish ("Blogs Que Sigo").
If you load up the reader and then like a post the image changes to the loading image and doesn't appear until you scroll off the cell then come back.
This should have been fixed in 006b525, not sure if master isn't merged or I'm running an old version
In the reader detail view, videos look like images, there's no indication of a "playable" object
Some images never load for me in the reader list, even though they load in the detail view. Seems to happen only on some private blogs.
Just noticed this in the current live version (3.7). My set up is: logged in to a WordPress.com account only (with 2fa if that matters), no blogs added, swedish localization. On iPhone 5 with iOS7 beta 6.
Steps to reproduce:
The Reader is the only place I've noticed this: wait for it to refresh by itself, then pull to refresh. The message never changes to "Release...". It still works, but feels buggy.
Haven't reproduced yet, but it seems as if you can't (at least visually) add more than one blog running 3.7 final.
Went through what I think is most of the app, but please have a look at the Crash Report screen as well. These strings really should be translateable since it makes the app broken if you don't know English -- and look funny either way.
Set up:
"This account has two step authentication enabled. Please configure an application-specific password to use with this application."
Old set up (add blogs): All strings as far as I can tell -- both for the old set up if you don't have any blogs (display intro text, logo, etc) and if you already have blogs in there (only 3 buttons and 2 descriptions).
About:"WordPress for iOS", "Publisher", "Copyright", "Terms of Service", "Privacy Policy"
Notification settings: all the main toggles, "Follows", "Achievements", "Comments", etc
Post Editor: Settings: "Format" and all post formats, "Set Featured Image"
Media: long strings uploading message are cut off (only one line here) and there's really no way around a long string in at least swedish.
Notifications:
Overview: all the text in the actual notifications, but maybe this can only be done WPcom side?
Comment: "Tap to reply", "Replying...", "Reply"
Lists: "These people liked your post:", "This person liked your post:", "to see them all, visit the post.", "x people liked it so far. Nice!", re-blogs and follow lists are out of order too, e.g. "view all followers"
Reader:
Overview: "on X" ("on BlogNameHere")
Commenting: "on X" ("on BlogNameHere" in navbar), "to X" ("to UserNameHere" in navbar), "Comment" button needs to be a new string since it's a verb here, not a noun - which are different strings in non-english languages.
Friend Finder: all of it, but I'm guessing this is because it's not native and should be fixed with the code clean up and refactoring -- ?
Tapping Edit in Settings causes strange animations to the tableview cells containing your currently added blogs -- this is on iOS7 with two WPcom blogs only if that matters.
WPTableViewController
checks this before triggering infinite scroll:
if (![self isSyncing] && [self hasMoreContent])
While we shouldn't duplicate "load more" requests, isSyncing
might be YES
because of a regular pull to refresh
It would be nice to make this a call to action to start following some blogs.
My spouse is a big reader user, and she had some thoughts about the native release:
cc @aerych
Notifications is rough in 3.7.
When a comment has parents and the first parent finishes loading, the arrow animates in on top of the top section of the child comment (don't have a screenshot for this but it's easy to replicate and has been persistent for a while).
Comments with parent comments always display a double arrow until the parent comment has loaded, and the avatar height changes when the parent is loaded as well, see these two:
The grandparent has the arrow graphics overlaying the entire top of the comment:
Reblogging should default to a blog that I have added to the app. When the blog list on the reblog view is tapped, the ones added to the app should be on the top of the list.
PostSettingsViewController.m line 649
-[PostSettingsViewController tableView:didSelectRowAtIndexPath:]
Fatal Exception NSRangeException
*** -[NSMutableIndexSet addIndexesInRange:]: Range {2147483647, 1} exceeds maximum index value of NSNotFound - 1
UX rough patch: if you have two-step authentication enabled for your WordPress.com blog, the process to add it in is all but smooth.
1.Sign into a WordPress.com account with two-step authentication enabled
2. A popup tells you you can't log in because you have two-step enabled, and that you need to generate an app specific password (but this seems to display in the Select Blogs screen on iPad so if you dismiss it you end up with an "empty" list and have to tap Back)
4. Go Back
5. Figure out what an app-specific password is
6. Generate app-specific password on desktop
7. Enter in all your details again
The expected process would most likely look like this instead:
(0.) A check on username is performed when entered to see if they're WPcom and if they have two-step enabled. If both are true, the description of the password field changes and there's info text about two-step below it, including a link to an FAQ entry and/or a WordPress.com support page
If we can't check for two-step like this I think we can at least do some work on the error message -- maybe use the new error messages, exchange the field description to also include a link to an FAQ entry or similar.
I logged in with my jetpack account that has no blogs attached to it and when I opened the reader it crashed. Continuing to open the app resulted in the app always crashing on launch as the app kept trying to re-open the reader.
It doesn’t appear that there’s a limit to the length of a title for a post – might want to ellipsize them after a couple of lines so they take up less space
EditPostViewController.m line 673
-[EditPostViewController autosaveContent]
Fatal Exception NSObjectInaccessibleException
CoreData could not fulfill a fault for '0x1cda2e40 x-coredata://6E653FA8-CC77-4648-A029-5998E6681583/Post/p78'
Try adding any topic with a space on it (e.g. ios development) and reader will fail with a 'bad URL' error
The UI of this form was intended to be similar to the notifications reply forms, but the interaction gets a little klunky, especially when rotating on the phone. The ipad also let's you have multiple forms open, one on the list and one on the detail, which is confusing.
Try to adopt the input accessory method of the new reply interface.
There's no specific error, just 'Failed'
From ReaderPostsViewController fetchBlogsAndPrimaryBlog
:
__block NSNumber *preferredBlogId; // We store the primary blog here
//...
// This queues a network call
[[WordPressComApi sharedApi] getPath:@"me"
parameters:nil
success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSDictionary *dict = (NSDictionary *)responseObject;
NSNumber *primaryBlog = [dict objectForKey:@"primary_blog"];
[usersBlogs enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
if ([primaryBlog isEqualToNumber:[obj numberForKey:@"blogid"]]) {
// At this point, nothing is going to read what's in preferredBlogId
preferredBlogId = [obj numberForKey:@"blogid"];
*stop = YES;
}
}];
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
}];
// but continues right away
//...
// Network call hasn't finished yet, so this is nil
if (!preferredBlogId) {
NSDictionary *dict = [usersBlogs objectAtIndex:0];
preferredBlogId = [dict numberForKey:@"blogid"];
}
I haven't really tested but I remember seeing the wrong blog pre-selected on reblog.
Problem here is that we rely on the success block to set the block variable preferredBlogId
, but the API call is async and by the time preferredBlogId
is set the rest of the method has been executed already.
PostSettingsViewController.m line 144
__41-[PostSettingsViewController viewDidLoad]_block_invoke
Fatal Exception NSInvalidArgumentException
-[__NSCFBoolean length]: unrecognized selector sent to instance 0x3ab41538
Relevant code:
[self.post getFeaturedImageURLWithSuccess:^{
if (self.post.featuredImageURL) {
NSURL *imageURL = [[NSURL alloc] initWithString:self.post.featuredImageURL];
Feels unlikely that self.post.featuredImageURL
can be a boolean, so maybe related to memory-management
Log in to the app for the first time with an account with no blogs.The app either crashes or the UI is completely broken.
Strings like "%i hour ago"/"%i hours ago" can't be properly translated to some languages without proper plural support.
More info about plurals:
http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html
Simpler date formatting option using NSDateFormatter
:
https://gist.github.com/koke/6028357
Another option is Smartling, but that'd require patching Glotpress and our translation scripts
It's going to be hard to catch every possible rendering issue by testing. Add a share option to report "this post looks wrong", so the whole reader post object is sent, and maybe a screenshot.
Not sure I'll ever be able to reproduce, but I'm on a connection that drops a lot of packets today. I got timout errors and when I tried viewing Stats once it said the password was out of date and redirected to an Edit Blog screen to update - ouch. After I tried to reproduce a few times it randomly just worked again (I never changed the password).
Needs investigating, we shouldn't ever ask people to update passwords unless that's really the issue. FYI I have 2fa enabled and an app-specific pass in the app.
On DTCoreText views, you can't select/copy text
Some parts of the code still use [WordPressComApi sharedApi].username
to get the WordPress.com account. Migrate everything to the new WPAccount
system.
Once you finish reading a long article it kind of feels natural to keep dragging to close the view and go back to the list.
Kind of a bug, kind of an enhancement. The reader comment list should load more and this is broken. A problem with loading more while scrolling is what we do with previously orphaned comments now that fresh content that includes their parent. If they would appear above the current scroll position its a bad experience.
Some sort of paging vs scrolling might be an angle of attack but the underlying issue is we get the data chronologically and flat vs chronologically and nested.
Newly signed up users have no topics other than the default, so the topics list isn't as useful. Add the ability to add/remove topics.
The expected behaviour for turning off notifications would be for all the fields to disappear -- you turned it off, none of that matters now. If you only turned it off for a limited period of time we could instead disable all toggles but the best option may be to, again, hide all the fields.
If you pull to refresh on the reader and there's no new content, the onSyncSuccess:response:
callback sets _hasMoreContent = NO
.
After that, infinite scroll is never triggered until you change topics
I'm still not sure if it's iOS7 only, but:
loadURL:
is called before the view/webBridge are availableMost of the times it feels the image loading is slow while scrolling. Once scrolling stops the image might take a few seconds until it appears.
Some ideas to consider:
-[ReaderReblogFormView handleSendButtonTapped:]
calls self.post reblogPostToSite:_siteId ...
.
_siteId
is set by setDestinationBlog:
, which is called when the user switches blog or when the reblog form is initialized:
- (id)initWithFrame:(CGRect)frame {
//...
NSArray *blogs = [[NSUserDefaults standardUserDefaults] arrayForKey:@"wpcom_users_blogs"];
if ([blogs count] > 1) {
//...
NSNumber *primaryBlogId = [[NSUserDefaults standardUserDefaults] objectForKey:@"wpcom_users_prefered_blog_id"];
[blogs enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
if ([[obj numberForKey:@"blogid"] isEqualToNumber:primaryBlogId]) {
[self setDestinationBlog:obj];
stop = YES;
}
}];
} else if ([blogs count]) {
[self setDestinationBlog:[blogs objectAtIndex:0]];
}
//...
}
wpcom_users_blogs
is populated by -[ReaderPostsViewController fetchBlogsAndPrimaryBlog]
, but a user might tap a reblog button before that request is finished, _siteId
will be nil
, and this will crash:
- (void)reblogPostToSite:(id)site note:(NSString *)note success:(void (^)())success failure:(void (^)(NSError *error))failure {
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObject:site forKey:@"destination_site_id"];
Crash 1276
If showing a placeholder, once its image has fully loaded fade in the final image instead of just swapping it for a better visual experience. Props @nbardbury
We could use the page title for the email subject
Before release, we should clean up the old hybrid reader files
As reported by koke from the road:
"Open an article with a link on the reader, tap the link and it opens a browser. Tap it again and a second browser is stacked. Each tap keeps opening new panels."
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.