Giter Club home page Giter Club logo

tabsaver's People

Contributors

bogdanvesylivskyy avatar kdidenko avatar kreativekrise avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

tabsaver's Issues

Fine-tune the project's Git configuration

Summary of Git configuration goals:


  1. Use the appropriative git-config and git-attributes parameters to make the GitHub flow more personalized and better-reflecting all pending project needs. E.g: configure patterns for per filetype approach for Diff'ing, logging, building stats, pre- and post-commit triggering, referencing and validating.
  2. Use this Issue, link a new one, or use project's Wiki for holding the complete list of Git's advanced customization features along with their usage and configuration manual. Keep updating the task list below according to the advanced customization features documentation research process from GitHub and legacy Git documentation
  3. Start working on this Issue by completing the following tasks:

#Pending TabSaver Git config customization tasks


  • Integrate existing Gulp automation, npm and Github flows
  • Find out all Git attributes of interest which can be applied to the project and build their list in Wiki
  • provide the corresponding pre-filled .gitattributes configuration file
  • Find out all Git config options which can be applied to optimize the project's CI processes

  • To be continued...

Fix all warning reported by JShint files linting

There are no errors but project have around 18 warnings, they all must be fixed:

ws1@kdidenko ~/projects/TabSaver/src/tabsaver
$ grunt --force jshint
Running "jshint:build" (jshint) task

src/scripts/dialog.js
  line 94   col 39  Missing semicolon.
  line 31   col 15  Weird construction. Is 'new' necessary?
  line 134  col 1   Missing '()' invoking a constructor.
  line 134  col 2   Missing semicolon.
  line 214  col 13  Unnecessary semicolon.
  line 258  col 49  Functions declared within loops referencing an outer scoped variable may lead to confusing semantics.
  line 339  col 20  Functions declared within loops referencing an outer scoped variable may lead to confusing semantics.
  line 142  col 16  Weird construction. Is 'new' necessary?
  line 374  col 1   Missing '()' invoking a constructor.
  line 430  col 2   Unnecessary semicolon.
  line 440  col 2   Unnecessary semicolon.

src/scripts/identity.js
  line 81   col 47  Missing semicolon.
  line 146  col 37  Misleading line break before '+'; readers may interpret this as an expression boundary.
  line 152  col 29  Misleading line break before '+'; readers may interpret this as an expression boundary.
  line 168  col 6   Missing semicolon.

src/scripts/popup.js
  line 37   col 43  Functions declared within loops referencing an outer scoped variable may lead to confusing semantics.
  line 42   col 2   Unnecessary semicolon.
  line 80   col 33  Confusing use of '!'.

  ‼  18 warnings

Warning: Task "jshint:build" failed. Used --force, continuing.

Done, but with warnings.

Separate the Web Store data from Extension Usage Analytics

Currently we use a single TabSaver's account Property instance to track both the "TabSaver" Chrome Extension usage (E.g: ../dialog.html) as well as its corresponding Chrome Web Store page views and events, which makes it difficult then to identify the exact numbers for both.

Therefore, it is required to create a separate Property configuration within the existing TabSaver's Analytics Account to be used for all further Web Store analytics and tracking, so the currently used Property will be used for Chrome Extension usage analytics only!

Restructure the source code

Move all extension's assets into corresponding directories group. E.g.: all JavaScript files must belong to ./scripts/ directory, as all images must be moved to ./images/, etc... New structure must be similar to:

+/tabsaver/
+--- /scripts/
|     ---- *.js
+--- /styles/
|     ---- *.css
+--- /images/
|     ---- *.jpg
|     ---- *.png
|--- dialog.html
|--- manifest.json
+--- README.md

Update the Copyright section

The current 1.1.14 version of "Copyright" section at the TabSaver's dialog pop-up footer has no logical structure.

Beside this, it contains direct links to the TabSaver's Chrome Webstore page along with its registered domain URL, which makes it difficult to track from point of view of links campaign analytics.

Therefore, the following structure changes are required:

  • 1. keep the Copyright's Year always up to date (e.g.: © 2014 - current)
  • 2. make the logical Copyright sentence structure (e.g.: Copyright © {FROM} - {TO} by TabSaver Team)
  • 3. Use shortened Goo.gl URLs followed by Google Analytics campaign tracking parameters for advanced transitions tracking.
  • 4. Replace the Chrome Webstore Details page with Chrome Webstore's Review page in order to increase the number of Users Feedbacks

Session sharing with other users

Add possibility to share the session with other users ( for example: group of saved links for workspace or study space or whatever ... )

Refactor the code of Dialog's UI view tabs toogling

See popup.js Lines: 4 - 27

instead of manually "switching off" all previously active tab and switching on the one required, and adding same code blocks for each new tab in the future, changed code must determine which tabs exist, which must be "off" and which to activate automatically

Change the Authentication flow, and run it at the very beginning of extension's Life-Cycle [LC]

Currently, the OAuth2 process is only started after DOMContentLoaded event emitted for TabSaver's BrowserAction dialog box, which is completely not the proper optimization (architecture) approach, taking into consideration TabSaver's infrastructure and it's Life-Cycle.

Then, next to the Google Analytics [GA] code initialization, it is asynchronously(!) trying to request the Google API access_token for further retrieve the basic user info. Requesting the access_token causes the user to Sign in to his Chrome Account, which has a serious impact on the data extension is working with.

Currently, there is no interaction implemented between main TabSaver's functionality and OAuth2 process activities, which must be changed in order to make both modules properly handle the authentication flow and private data.

Since now it is required to coordinate any synced extension's data updates (like modifying any saved user Session or even storing current one) according to the authentication status, the best solution will be to move all initial OAuth2 functionality earlier by the extension's Life-Cycle, and the best place will be to put it into the BackgroundPage

  • 1. Addapt and attach the OAuth2 functionality from the identity.js along with existing Background Page script stub
  • 2. Refactor the identity.js code for requesting the access token from a not interactive mode immediatly after BackgroundPage module have been loaded (theoretically on the browser start; //TODO: find it out!)
    • 2.1. Find reliable information regarding the extensions Life-Cycle
  • 3. tabsaver:OAuth2.client.getAccessToken( {interactive: false}, _see_next_steps__callback );
  • On Success: store the access_token and corresponding UserDetails in a secure place later accessible from the main TabSaver's dialog (BrowserAction)
  • On fail: store an empty UserDetails object at the same place containing flag notifying that a background, non-interactive session getting access_token failed, so the extension will start this Authentication flow over, but using interactive mode this time.
  • 4. [Further]: make sure that both BackgroundPage's and BrowserAction's identity.js instances may easely exchange access_token in realtime. Add this functionality, if NOT!

See related issues:

#1 Add verification if user is currently logged in to his Google account
#2 Restructure the source code

integrate Gulp development helper tasks

add a development and release builds automation using Gulp tasks such as:

  • project directory structure
  • lint
  • imagemin
  • js uglify
  • cleanCss
  • htmlmin
  • chromeManifest
  • babel - (for JavaScript expressions of ES6 specification)
  • gzip (for Release)
  • saas

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.