Coder Social home page Coder Social logo

icro's Introduction

Icro - a Micro.blog client

Icro is a third-party Micro.blog client.

Download from the App Store

About

Icro does not serve the purpose of a showcase project. Many parts were hacked together as I wanted to ship this App as quickly as possible. From now on all development will happen in public on Github. A structure with issues, planned features will be added using the GitHub tools.

Building

Open Icro.xcworkspace in Xcode 9 and compile it. All required dependencies are checked in and can be found in the Podfile. In order to fix signing, please change the development team during development.

Generating Screenshots

To generate screenshots, go to IcroScreenshotsTests and modify accessToken constant with a valid Micro.blog access token. Afterwards run fastlane snapshot.

Contributing

Feel free to contribute to this project at any time with any improvement. In the coming days I plan to generate some issue I want to tackle for upcoming versions of Icro, some would be perfect starter tasks.

License

Icro is free and the source code is available under MIT license. Please do not ship this App under your own account.

icro's People

Contributors

dentalala avatar fossil12 avatar hartlco avatar lioncourt19 avatar michaelfransen avatar sauberfred avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

icro's Issues

Profile images don’t update

Using version 2.3(717) from TestFlight, but this has been an issue with previous versions.

It seems that once Icro initially caches a profile picture it never refreshes it if the user updates the picture.

Replace manually checked in dependencies with submodules/SwiftPM packages

Currently some external dependencies are manually checked in the external folder. This was done to remove CocoaPods and start embracing SwiftPM as soon as possible.
Some dependencies were not available as SwiftPM packages and were therefore manually checked in.

The goal is to move the dependencies to SwiftPM. If no package is available, the should be integrated as git submodules as already done in in the submodules folder.

Sent with GitHawk

Double-clicking post button posts twice

When creating a new post, accidentally double-clicking the Post button results in a duplicate post.

Presumably because both clicks (I'm using the iPad Magic Keyboard trackpad) are handled as single clicks, and the view isn't dismissed until both are received.

Should check for a double-click, and ignore the second one.

Swiping the ProfileTableViewCell left or right crashes Icro

If you try to swipe the ProfileCell in the Profile tab either to the right or left side Icro crashes with an "Index out of range" Error in the item function of ListViewModel.

func item(for index: Int) -> Item {
    return items[index]
}

This happens in the Simulator and on my iPhone 6s.

Use spinner to indicate loading instead of LoadingView

To give the App a more native iOS feel, I would like to reduce the usage of the LoadingView and rely more on the native spinner controller.

We can show a loading indicator in the navigation bar whenever the LoadingView was shown.
For error we can still rely on the LoadingView for now.

Keyboard hiding after each letter, Adding a micropub end point does not seem to work

First -- thanks for this app! Looks really great, it's awesome that you've open sourced it, and it was great to see general Micropub support in there as well.

I downloaded this morning on iOS. When trying to type letters into any of the fields of the Post to Micropub section, after each typed letter, the iOS keyboard hides itself. So I have to click into the field again, type one more letter, and then the keyboard slides down.

I copy/pasted my blog IndieAuth end point to get it filled in, and clicked on IndieAuth. It successfully auth'd with my end point, and re-opened Icro, but the endpoint URL and Access token were not filled in.

Not sure what to try next -- I assume what is supposed to happen, is that the endpoint and token were supposed to auto-populate from the Indie Auth.

Wordpress image upload

Currently Icro only support image upload to micropub media endpoints. This includes Micro.blog. Uploading images to Wordpress would be the next obvious implementation step

Tip Jar when text size is large

The tip jar area of the settings screen looks odd on my device, probably because I have the device text size set very large. I attached a screenshot.

img_0332

Congratulations on the 1.3 update!

Allowed to post without content

Background

This is a very small bug. Currently the app allows you to post even though you haven't entered any content. A post actually isn't created though.

Proposal

Disable the Post button and make the font grey until content is entered. If all content is removed it should go back to the grey/disabled state.

I am willing to make this change, but I wanted to run it by people before doing it.

Push notifications

I blogged here about how Micro.blog could provide push notifications for third-party apps like Icro. Here are some additional thoughts on it:

  • @hartlco would generate push certificates via Apple's developer program and send them to me to store on Micro.blog servers.
  • Icro would be updated to call into Micro.blog to register the client app when the app launched. I'm thinking this might be a "last app wins" approach. So if you open the official Micro.blog app, it switches push notifications to target that app. If you then open Icro, it switches to sending notifications to Icro.
  • Micro.blog currently only sends notifications for @-mentions. Later it could be updated to send silent notifications when any new posts arrive, for a more real-time experience.

Feedback welcome, of course. Whatever we do here can be a template for other apps.

Show loading indicator on Mac version

As the loading indicator is now shown inside the navigation bar for the iOS version, the loading indicator needs to be placed inside the toolbar for the Mac catalyst version.

Add setting to increase font size

Add setting that increases the font size by a scaling factor.
The preferred system font size should be respected but scaled by an optional user setting

Swipe gestures in conversation view

This is more just odd behavior to me than an issue. Was testing out the swipe gestures that were just added back in the latest beta and noticed that while in conversation view you could still swipe left to open the same conversation view. Not sure how many people will actually do this but could lead to some confusion if they do and then have to swipe back multiple times to get out of conversation view. Also same with the context menu.

Feels that the conversation view could be deactivated for both of those options while on the conversation view. Not sure how easy that is since I haven't worked with context menus yet. But just some feedback I wanted to share. 🙂

Loading/Error Message does not wrap

I found this to be a problem with the german translations of the error messages as they are a bit longer. But this should also be a problem on smaller screens and if the user is using display zoom.

The statusLine layout from SwiftMessages is not supposed to warp, see SwiftKickMobile/SwiftMessages#193.
As mentioned in the issue one could modify the xib file or use a different layout.

Videos don't have sound

Playing videos in the iOS app have never have sound. Which can be nice sometimes, but should be supported.

Send photo(s) in photo property, not as part of content property

When posting a note with a photo, Icro sends the following request to a Micropub endpoint:

h = "entry"
name = ""
content = "Martello tower.\n" +  "![96053175-02F9-4950-86D7-F960971FE008.jpg(https://getindiekit.github.io/sandbox/media/photos/2020/09/05/6q5e4.jpg)"

However, if a post contains a photo, the photo(s) should be sent using the photo property. So in the above case, the following would be sent instead:

h = "entry"
name = ""
content = "Martello tower"
photo[] = "https://getindiekit.github.io/sandbox/media/photos/2020/09/05/6q5e4.jpg"
mp-photo-alt[] = "96053175-02F9-4950-86D7-F960971FE008.jpg"

This structured format has many benefits. First, it means a server can identify the type of post (note or photo) and potentially process it differently; perhaps using a different permalink format.

It also means authors can work with the content and photo(s) data individually. For example, with the current data provided, it’s not possible to output the following HTML:

<p>Martello tower</p>

<figure>
  <img src="https://getindiekit.github.io/sandbox/media/photos/2020/09/05/6q5e4.jpg" alt="">
  <figcaption><p>96053175-02F9-4950-86D7-F960971FE008.jpg</p></figcaption>
</figure>

Split up HTMLContent parsing into HTMLContentBuilder

Currently the model Handels the creation of the HTMLContent.
This couples the model tightly to the SwiftSoup dependencies and logic needed for the creation of the attributed String.

Splitting it up in the pure HTMLContent and a builder that creates the HTMLContent will solve this issue.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.