🌊 Wave 0.2.0 – SharedPreferences made secure

:wave: Wave

Greetings,

Today I announce β€œ:ocean: Wave,” the encrypted alternative to the tiny database component. I created this to make kreating your projects simpler, nearly everything is done for you behind-the-scenes :partying_face:.


Key points

  • Built on the EncryptedFile and EncryptedSharedPreferences classes
  • Decrypt and encrypt files
  • Retrieve and store key-value pairs with encryption
  • Wave works with API 21+ and was tested with API 30




:wastebasket: Delete

There is one parameter to this method:

  • namespace

USE Delete a namespace altogether, including unregistering its listener if registered.

:x: Remove

There are two parameters to this method:

  • key
  • namespace

USE Remove a key and its associated value from a namespace.

:x: RemoveAll

There is one parameter to this method:

  • namespace

USE Remove all keys and their associated values from a namespace.

:x: RemoveAllFiles

USE Remove all encrypted files.

:rocket: Retrieve

There are three parameters to this method:

  • defaultResult
  • key
  • namespace

key is interoperable, meaning:

  • using a file name as the key will retrieve the content that was associated with the value.
  • using a normal string as the key will retrieve the value which made this a key-value pair.

namespace is ignored if:

  • key is formatted as a file name.

ALTERNATE USE Retrieve the value of a key formatted as a file name.

MAIN USE Retrieve the associated value of a key.

:rocket: RetrieveAll

There is one parameter to this method:

  • namespace

USE Retrieve all keys and their associated values from a namespace.

:rocket: RetrieveAllFiles

USE Retrieve all encrypted files and their content.

:ear: SharedPreferenceChanged

There are three parameters to this event:

  • key
  • namespace
  • value

USE Listen for shared preference events.

:card_file_box: Store

There are three parameters to this method:

  • key
  • namespace
  • value

key and value are interoperable, meaning:

  • using a file name as the key will cause the value to be the content.
  • using a normal string as the key will cause the value to make this a key-value pair.

namespace is ignored if:

  • key is formatted as a file name.

ALTERNATE USE Store a key as a file name with its content as the value.

IMPORTANT The key will be overwritten with the new value, even if it’s a file.

MAIN USE Store a key and value in a namespace.

NOTE Files can be found in the external files directory, but they won’t be readable.



Files

Wave is 614 KB, but it protects your users privacy, so I think it’s fair. And it’s free?

17 Likes

Nice & Useful Extension Again @FlailingOctopus .

1 Like

Epic work @FlailingOctopus

:heart: :smiling_face_with_three_hearts:

Well, I love way you name your extensions

Really Nice, But It Looks Good When Contains Blocks Image Also.

:wave: Wave 0.2.0

Greetings,

I know it’s been only a few hours that β€œ:ocean: Wave” has been released for, however another release was needed to add and fix some things.


Added

  • Added Delete to delete a namespace altogether. This makes use of RemoveAll, however also unregisters the listener associated with the namespace if one is registered.
    • false can be returned even if the namespace has been cleared because a listener might’ve never been registered.
  • Added Remove to remove a key and its associated value from a namespace.
    NOTE Files won’t be deleted unless they’re encrypted.
    • This is interoperable, meaning:
      • using a file name as the key will delete that encrypted file.
      • using a normal string as the key will delete its associated value.
  • Added RemoveAll to remove all keys and their associated values from a namespace.
  • Added RemoveAllFiles to remove all encrypted files.
  • Added RetrieveAll to retrieve all keys and their associated values from a namespace.
  • Added RetrieveAllFiles to retrieve all encrypted files and their content.
  • Added SharedPreferenceChanged to listen for shared preference events. This will be delegated at the time it’s registered.

Changed

  • Changed the way Store works internally – An OnSharedPreferenceChangeListener will be registered if a listener hasn’t been registered for the namespace.

Fixed

  • Fixed integer results being returned when using Retrieve on file based keys and normal keys.


Core App Quality report

Wave follows multiple guidelines from the quality guidelines to make sure your projects runs at its best!

  • Follows FN-B1 by making use of onDestroy, onPause, and onResume lifecycle events.
  • Follows PS-S1.
  • Follows PS-T1.
  • Follows PS-T3 – Extensions can’t be compiled using compileSdk, however Wave does use the Snow Cone SDK for compilation.
  • Follows PS-T4.
  • Follows PS-T5.
  • Follows PS-T6.

Files

Wave is now 614 KB, a 4 KB increase from before!

  1. com.github.flailingoctopus.wave.aix
3 Likes

Really awesome extension.

You should use progaurd for reducing file size if you are not already using it.

Hi @zainulhassan,

Your feedback is appreciated, however ProGuard was used and cut size down by 80%.

Profoundly,

– :octopus: Nathan

2 Likes