Code Monkey home page Code Monkey logo

ifixitandroid's Introduction

Official iFixit Android App v2.9.2

This app is a native Android version of the iFixit website including:

  • Device hierarchy browsing
  • Answers and guide lists for devices
  • Guide view
  • Viewing and adding comments on guides
  • Media manager integration: viewing and uploading of images
  • Guide lists for favorites, featured, and teardowns
  • Guide creation and editing
  • Syncing guides for offline viewing

Installation

Start by cloning the repo:

git clone https://github.com/iFixit/iFixitAndroid.git

Copy gradle.properties.base to gradle.properties. This contains all of the values necessary to build the app in debug mode. To build the app in release mode, update the necessary keystore information and symlink App/sites/{siteName}/keystore to your keystore like so:

ln -s /path/to/keystore App/sites/ifixit/keystore

Open build.gradle in your IDE of choice or build it on the command line by invoking gradle commands such as gradle installIfixitDebug.

Acknowledgements

All of the app's content comes from iFixit's public API.

The app is built on many open source libraries such as:

The complete list of dependencies can be found in the build.gradle file.

Contributing

We have a small development team, and don't have the resources to implement all of the features we would like to ourselves. We'd love help! If there is any feature you would contribute, fork our code and hack away!

Got an awesome feature idea that we don't have an API to support yet? Post the request on iFixit Meta and we'll add it to our to-do list.

Before your code can be accepted into the project you must also sign the Individual Contributor License Agreement (CLA).

Licensing

This source code is licensed under the GPLv3. Any submissions to this project must also be licensed under GPLv3. The contents of this software are subject to the terms of the GNU General Public License (the "License"). You may not use this software except in compliance with this License. You can obtain a copy of the license at http://www.gnu.org/licenses/gpl-3.0.txt. See the License for the specific language governing permissions and limitations under the License.

TRADEMARK NOTES

All iFixit trademarks contained herein are NOT licensed for use by any third-parties. Their inclusion in this open source software is only for their eventual replacement if you distribute the application.

That is, the trademarks are protected, but the code itself is under an open license. You can use the trademarks individually, but not for any sort of distribution.

Copyright (c) 2012-2016 iFixit

ifixitandroid's People

Contributors

aarnrvera avatar danielbeardsley avatar kwiens avatar marczych avatar matthiashuisken avatar ssaamm avatar timothyasp avatar wgalan 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  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

ifixitandroid's Issues

Dozuki: Clearing search query doesn't reset site list

Entering a search query filters the list of sites but hitting the X to clear it doesn't reset the list. Nor does backspacing all the way (the filtered results for the last remaining character are displayed). The only way to reset the list is to close the dialog and reopen it.

Figure out what to when there are no guides for a topic

Right now the Guides tab is completely empty if the current topic doesn't have any guides. Although the default tab in this case is "More Info" it is awkward to allow users to go to that tab even if it says "No guides."

I think we should remove or disable it.

Make empty "My Guides" view pretty

Right now, only the text "Add guides with the bar above!" is displayed on the "My Guides" page when the user doesn't have any guides. A nice graphic would be nice to motivate the user to create a guide. And maybe make the entire content be a button to make a new guide?

Or maybe the easiest solution is to replace the text with a "Create new guide!" button?

Intercept URLs

When the user clicks on a link to a guide in the stock Android browser we should ask the user if they want to open it in the iFixit app instead.

Usability Issues

  1. Webview width doesn't seem to be set correctly in landscape.

  2. When reselecting a device it should "reset" all of the tabs i.e. display the same tab that was displayed when the device was first selected.

  3. Show the scrollbar when there are more items to see below.

  4. Display "No Guides" on the Guides tab if there aren't any guides.

  5. Don't display any thumbnails if there is only one image for the current step.

  6. Remove the title text because it is redundant. Note: The title of the current device is displayed and does not change during topic hierarchy navigation.

Internationalize App

Translate app to Spanish, German and French at first, then to all other languages.

Need to update API to include locale parameter

Escape HTML entities in guide list

Currently HTML entities are not converted to their UTF-8 counterparts in the list of guides for a device.

For example: "MacBook Pro 17"" is being displayed as "MacBook Pro 17"".

Make text hyperlinks clickable

Currently links are displayed in the intro page of the guide view but clicking them does not open it in a web browser.

Visible "Log In" link on internal browser doesn't integrate with app

Between the initial app startup and going straight to a product Info page, there's no obvious login method in the app.

I tried logging in using the "Log In" link in the internal browser. (Because testing)

In landscape mode, the keyboard consistently covers needed textboxes for login info input. In portrait mode, it's only slightly better.

Once logged in, the app itself is unaware of that fact (such as after clicking the gallery button in the upper-right).

Repro:

  1. Start app while not logged in
  2. Visit a specific product info page
  3. Observe the "Log In" link in the upper-right of the internal browser, and try to use it to log in.
  4. Use the Gallery button in the upper-right of the app.

Swipe between full screen guide step images

Recommended in a comment on the Play Store: "Would be nice to be able to flick through photos! It would be more intuitive to flick left and right through photos on the same page rather than having to X out if them and select the next one. Other than that, an amazing resource :-)"

We could add a ViewPager in FullScreenImageActivity that pages between all images on the current step.

Guide Creation release todo

Before we can release the new guide creation functionality to the public (well non-source-building public), we need to address these issues.

Build + documentation

  • Update readme to include new build instructions for maven with eclipse, intellij and command line. Also update endpoints used.
  • Make sure all dependencies are in some central repository, or at least write a script that downloads and installs all the maven dependencies locally so others building the app can easily get started.
  • Add maven-release-plugin and get the app set up to push tags, update the manifest and export + sign the apk.

Miscellaneous Pages

  • Help Pages
  • About Page
  • Device Search

User Guide List

  • Add refresh to guide list view. Right now the only way to refresh the guide list is to kill the app and reload it.
  • Editing any guide unpublishes the guide.
  • Expanding the last element in the list view in guide list doesn't move the screen with it, so you have to flick down to see the options. Also should add some extra padding between the bottom element and the page, that might help as well.

Create New Guide

  • There is no back button option on the logo when editing or creating an introduction. You have to use the hardware back.
  • Device input field needs to autocomplete or at least give a dropdown of options of possible devices or the option to create a new device/topic. Needs to be topic in the dozuki app.
  • Introduction field in the guide intro is outputting introduction_rendered which is the HTML output. Should be bringing in introduction_raw.  After saving the intro, the characters are run through html_entites which fucks up all the html into a bunch of goblygunk. 
  • Focus should be renamed to subject(?) and it's currently not being populated or saved. 

Step Creation

  • Tapping an empty thumbnail to add an image should let you capture and attach the image directly rather than having to go through the media manager which takes 5 steps to capture and attach the image currently. This is a critical feature before release since the primary use case we've identified for this app is stubbing out a guide with pictures, then adding text later on the computer.
  • Step reorder "Done" vs "Confirm" options are not intuative. The first two times I interacted with it, I thought "Done" was the option to save the step reordering (The checkmark makes it confusing) and I thought it was a bug when it didn't work. "Confirm" is actually what saves.
  • Step line text form fields need to be multiline, without newlines. single line is unuseable when editing existing guide steps or reviewing added text.
  • Tapping the main guide image in step create/edit does nothing. It should bring up a full size image just like the step view.
  • Clicking confirm on reorder steps without doing anything still sends off a request. We should check to see if the order changed at all to prevent useless queries.
  • Clean up thumbnail code. Should use ThumbnailView, instead of explicitly setting each image...
  • Drag and drop reorder thumbnail images
  • "+" Icon add images if > 1 and < 3

General

  • Help text needs to be updated.
  • API Error alert dialogs are just using a generic message right now - we should use the specific API error messages.
  • Full screen gray background spinner is ugly (actually the generic spinner in general). It works on long loads, but for short updates, it's not noticeable that it's a loading spinner and it just looks like the page is flickering
  • Logging out needs to clear the guide list and bring up the login dialog
  • When paging quickly through steps, loading images show no indication that they are loading. They just pop in. should have at least a placeholder for them to show something should be there.
  • Deleting a guide or step needs more ominous/serious warning text. Deleting a guide is unrecoverable, so it's serious business when you do. The app makes it really easy to do that, so we need to make sure the user understands.
  • We need buttons to view a guide on the user guide list and on step edit.
  • The ordering of tabs on topic view (guides, answers, info) might need to be changed to (guides, info, answers) to avoid bugs with sites without answers.
  • Navigation overhaul

10in Tablet

  • Layout optimizations. Tablet view is basically the same as the phone, just 1.5-2.5 times bigger. We should take advantage of the extra screen space.
  • Main image is using .standard or .medium size and is about the same size as the thumbnails. Thumbnails are also too large so they are blurry. Should use same sizes as guide view
  • Tapping any element in portrait mode (like edit guide) rotates the screen 180degress while saving (full screen spinner) and then rotates back.

Extend WebViewFragment instead of Fragment

We are getting loads of warnings from the webviews and I have a feeling that it's because it's in a fragment. There is a WebViewFragment class that we can probably extend and hopefully it will handle cleanup automatically.

Git modules are private

I would like to include this in F-droid FOSS repository but the submodules can't be download as is, because the are ssh urls. Would you mind saving me the next hour fiddling with sed by having them point to publicly accessible locations?

Some guide links crash the app

When looking a the Xbox Red Ring of Death guide (guideid 3550) the "Reflowing" and "Step 49" links crash the app when clicked.

The root of the problem is the href in the text:

<a href="/Guide/Reflowing-Xbox-360-Motherboard/5845/17#s25864">Reflowing</a>
 the motherboard after completing 
<a href="/Guide/Installing-Xbox-360-Red-Ring-of-Death-Fix-Kit/3550/17#s16982">Step 49</a> 
of this guide

As you can see it is a relative link which works great when you are on ifixit.com but not when you are giving Android a URL to go to without any context.

GuideView loading

When GuideView is launched an HTTP request is sent to gather guide data from the API. Once it comes back then we show the guide view.

  1. Make it show a progress bar (or just a spinner to show that it's thinking) while the request is still pending.

  2. Have some sort of timeout if the request never comes back or fails and display an appropriate message.

Step title API

Custom step titles are possibly not working. Investigate.

Dozuki Build script

We need a script to build and switch apps. For example, the script needs to switch from com.dozuki.ifixit to com.dozuki.dozuki or any com.dozuki.*

  • Change package names everywhere
  • Change icon to icon_*.png
  • Change label text to @string/app_name_*

1.2.1 build problem

Can't check out b925b2f2a6310ecf17d57049953a7281d9b13f9a' in submodule path 'HoloEverywhere'

Final v1.0 requirements

  1. Display "No guides" if there aren't any guides for a topic.

  2. (NEED TO TEST) Layout for all screen sizes/densities.

  3. No image images break layouts.

  4. New app icon (fist?).

  5. Display error messages if anything bad happens with API calls/JSON parsing.

  6. Sort out all resource sizes/densities.

  7. Go through Android Lint and fix any huge problems.

  8. Back arrow on app icon should be white rather than black.

  9. Add close button to full screen image view.

  10. Remove any unused resources.

  11. Fix guide intro view. It looks pretty bland on tablets and it's pretty broken on phones. Still looks bland, but no breaking.

  12. Fix tablet fist background on orientation change.

  13. Image size on guide list on tablets (padding with grey).

  14. Add swipe from left edge to display the topic list.

  15. Add to swipe to begin.

  16. Decrease bullet size to about the same size as a line of text.

Steps without images show spinner forever

I had assumed that the image was just taking forever to load, but I looked it up and there is no image for the guide in question. To navigate to it: Household -> Household -> Repairing Household Microwave turntable. The first step has no image.

If there is no image, the interface shouldn't act like there is an image that hasn't loaded yet.

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.